上传文件到宝塔面板管理的站点,明明网络没问题,却总是在50MB这个节点上被“咔嚓”一下截断——这事儿在运维圈里可太常见了。很多时候,上传失败、或者提示文件过大,根源就是Nginx和PHP这俩“看门人”设置的限高杆,其中最低的那根决定了你能传多大的文件。今天咱们就把这个逻辑理清楚,顺便把手尾一并收拾利索。

首先,宝塔面板本身并不会硬性规定一个50MB的上传上限。你看到那个“上传失败”的报错,十有八九是后端Web服务器(通常是Nginx)或者PHP给拦下来的。问题的症结,就在Nginx的client_max_body_size、PHP的upload_max_filesizepost_max_size这三项配置里,系统取的是它们三个当中的最小值。

改Nginx:先闯过第一道大门

这是最容易被忽略的一步——很多人一股脑儿去调PHP参数,结果Nginx在请求体还没到PHP那一步就直接说“不”了。所以,动手的第一步是放行Nginx。

调PHP:后端也不能拖后腿

Nginx这边放行了,PHP的路口也得同步打开。这里有个细节需要留意:post_max_size这个值必须大于等于upload_max_filesize,否则PHP会悄悄把大文件截断,连个像样的错误提示都不给你。在宝塔面板里操作很简单:

排查安全插件和前端拦截

哪怕后端全都放开了,有时候在宝塔面板界面上传依然会卡住。这种情况,问题很可能出在安全策略或插件上。有两样东西值得重点检查:

此外,调出浏览器的开发者工具(按下F12,切到Network标签页),看上传请求返回的状态码。如果返回的是413 Request Entity Too Large,那说明Nginx那边还没生效;如果返回500或者直接静默失败,多半是PHP配置或者插件的问题。

说到底,这活儿本身并不复杂,真正的麻烦在于:改完参数忘重载、改了Nginx却漏了PHP、或者自以为改对了版本,结果改的是另一个PHP实例的配置文件。所以,搞定之后不妨用php -i | grep "Loaded Configuration File"核对一下当前PHP加载的是哪份配置,这样才能确保万无一失。

本文转载于:https://www.php.cn/faq/2312013.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。