CentOS服务器WordPress报错:上传文件超出php.ini的upload_max_filesize限制
我碰到过好多次这个问题,尤其是在CentOS上部署WordPress的时候——你已经改了php.ini和wp-config但没效果,大概率是几个容易忽略的点没做到位,我给你一步步捋:
先确认你改的是正确的
php.ini文件
CentOS里PHP通常会有多个配置文件(比如CLI版和Web服务用的FPM/mod_php版是分开的),WordPress用的是Web服务器对应的那个。你可以在网站根目录创建一个临时的phpinfo.php文件,内容如下:<?php phpinfo(); ?>访问这个页面,找到
Loaded Configuration File这一行,这才是你真正需要修改的php.ini路径,别改错文件白忙活!确保
php.ini里的关键参数都改对了
打开正确的php.ini,修改以下几个参数(数值按需调整,比如要支持10MB上传的话):upload_max_filesize = 10M # 单个上传文件的最大大小 post_max_size = 12M # 必须比upload_max_filesize大,因为POST请求还包含其他数据 memory_limit = 64M # 给PHP足够内存处理上传 max_execution_time = 300 # 延长执行时间,避免大文件上传超时修改后保存,一定要重启对应的服务:
- 如果你用的是Apache+mod_php:
sudo systemctl restart httpd - 如果你用的是Nginx+PHP-FPM:
sudo systemctl restart php-fpm(注意对应你的PHP版本,比如php74-fpm、php81-fpm)
- 如果你用的是Apache+mod_php:
检查WordPress的配置和后台设置
注意你应该修改的是wp-config.php,不是wp-config-sample.php(sample是模板文件,要重命名成wp-config.php才生效)。可以在wp-config.php里添加以下配置强制覆盖:define('WP_MEMORY_LIMIT', '64M'); define('UPLOAD_MAX_FILESIZE', '10M'); define('POST_MAX_SIZE', '12M');之后登录WP后台,进入设置→媒体,看看“最大上传文件大小”是不是已经更新成你设置的数值了。
排查Apache的
.htaccess限制
如果是Apache服务器,检查网站根目录下的.htaccess文件(如果存在),看看有没有类似下面的限制条目,有的话修改或删除:php_value upload_max_filesize 2M php_value post_max_size 2M修改后保存,刷新后台再测试。
检查PHP-FPM的Pool配置
如果你用的是PHP-FPM,可能每个Pool的配置文件(比如/etc/php-fpm.d/www.conf)里单独设置了上传限制,会覆盖php.ini的配置。打开这个文件,搜索php_admin_value或php_value,找到upload_max_filesize相关的条目,改成你需要的数值,然后重启PHP-FPM服务。
最后测试完记得删掉临时创建的phpinfo.php文件,避免泄露服务器敏感信息!
内容的提问来源于stack exchange,提问作者Karachay

