WordPress上传50MB文件出现HTTP错误的技术求助
看起来你已经把常规的PHP和WordPress上传大小设置都调到位了,但还是碰到HTTP错误,这种情况大概率是那些容易被忽略的服务器层面限制在搞鬼,我给你列几个具体的排查和解决方向:
检查服务器超时设置
50MB的文件上传需要一定时间,如果服务器超时时间太短,就会直接触发HTTP错误。你需要调整这几个参数:- 在
php.ini里把max_execution_time和max_input_time设为300(5分钟)甚至更长; - 如果你用的是Apache服务器,找到配置文件里的
Timeout指令,确保值不低于300; - 要是用Nginx,就调整
client_body_timeout和fastcgi_read_timeout,同样设置为300秒以上。
改完记得重启服务器生效。
- 在
确认PHP配置是否真正生效
有时候修改php.ini后没重启服务,或者服务器上装了多个PHP版本,导致你改的配置根本没被用到。最简单的验证方法是在WordPress根目录新建一个phpinfo.php文件,内容如下:<?php phpinfo(); ?>访问这个文件,搜索
upload_max_filesize、post_max_size、max_execution_time这些参数,看看实际值是不是你设置的四倍大小。如果不是,找到正确的php.ini文件再修改。排查主机面板或服务商的额外限制
很多主机商(比如用cPanel的)会在面板层面设置独立的文件上传限制,这个限制会覆盖PHP的设置。你可以登录主机控制面板,找“文件管理器”或者“PHP设置”相关的选项,看看有没有额外的上传大小限制。如果自己找不到,直接联系主机客服确认是否有这类限制。绕过WordPress上传器测试
有时候问题出在WordPress内置的上传器上,你可以用FTP工具直接把50MB的文件传到wp-content/uploads/下对应的年份/月份文件夹里,然后在WordPress媒体库中尝试同步(有些主题自带同步功能,或者安装Add From Server插件来完成同步)。如果文件能正常显示在媒体库,说明问题出在WordPress上传器本身,反之则还是服务器层面的问题。查看服务器错误日志找具体原因
虽然前端只显示“HTTP error”,但服务器日志里肯定有更详细的错误信息。你可以在主机面板里找到“错误日志”选项,或者直接查看Apache的error.log、Nginx的error.log文件。常见的错误比如client intended to send too large body(请求体过大),根据日志里的提示就能精准解决问题。调高PHP内存限制
大文件上传和处理可能需要更多的PHP内存,哪怕你没碰到内存不足的提示,也可以试试调高这个参数:- 在
php.ini里把memory_limit设为256M或512M; - 同时在WordPress的
wp-config.php文件里添加一行:define('WP_MEMORY_LIMIT', '256M');
- 在
内容的提问来源于stack exchange,提问作者wloske

