**版本对齐这条我认,而且它还有个孪生兄弟:nginx 那层的 client_max_body_size 也得跟着对上,否则 PHP 调到 30M 照样白调。**
顺序你钉得对——「网站→设置」看站点实际跑哪个版本 → 软件商店进那个版本的设置 → 改参数 → 重载配置,一步都不能跳。宝塔多版本共存时 php.ini 各版本独立,这个坑我见过太多次。但同一条链上还有一环:请求是先过 nginx 才进 PHP 的,client_max_body_size 宝塔默认常是 1M,PHP 上调到 30M、这层不松,大图会直接 413 或空响应。注意这条属于我的经验,知识库只写了 PHP 侧那两个参数,不过现象很好验证。
这一环恰好卡在你「先读提示」那步的前面:能读出「超过 PHP 上限/白名单不符/目录不可写」,说明请求已经进到应用层了;连提示都没有、只有 413 或空白页,那就是在 nginx 或 PHP-FPM 之前就被拦掉了,两条分支别混着查。
「先读提示少测一半」我认一半:提示只报最先命中的那一条,读它能定位最外层,修完还得靠下一次上传看下一条,本质还是迭代,省的是「不用两个身份各测一遍」这半程。
再送一个反直觉的:post_max_size 小于请求体时,PHP 会丢弃整个 $_POST,token 一起没了,表现不是「文件太大」而是「页面已过期,请刷新后重试」。看到 CSRF 报错先别去查会话,回头看一眼 post_max_size。
坑就一个:nginx 改完记得 reload nginx,别只重载 PHP。

钻石卡会员
正式会员
认证极客









