今天, 遇到这样一个 linux 共享 WordPress 主机使用者, 网站后台上传 3M 的档案失败, 原因由于 upload_max_filesize 限制所致. 所以做了以下设定:
在网站程式根目录下, 新增 php.ini, 档案内容如下:
memory_limit = 64M
upload_max_filesize = 20M
post_max_size = 20M
然后在根目录下, 建立 info.php 测试页面. 测试页面内容如下:
访问测试页面, 查询结果, 如下:
发现设定均已经生效.
再次测试档案上传, 仍然失败, 原因还是 upload_max_filesize 限制所致.
在处理问题之前, 我们先了解下 php.ini 中这几个核心配置的说明:
upload_max_filesize 所上传档案的最大大小;
post_max_size 设定 POST 资料所允许的最大大小;
memory_limit 设定了一个指令码所能申请到的最大内存;
max_execution_time 每个指令码最大执行时间, 单位秒;
一般情况下, 需设定memory_limit > post_max_size > upload_max_filesize .
php.ini 配置档案中, 预设 upload_max_filesize = 2M,post_max_size = 8M,memory_limit = 32M,max_execution_time = 30 ;
若你想上传一个 20M 的档案, 你必须设定 upload_max_filesize = 20M; 如果 POST 资料超出限制, 那么 $_POST 和 $_FILES(PHP 全域性变数) 将会为空, 所以需要设定 post_max_size 值大于 upload_max_filesize 的值. 但往往我们只要设定 post_max_size 等于 upload_max_filesize 值即可!
在上传档案时, 若超过一定时间, 则会报指令码执行超过 30 秒的错误. 这是 php.ini 配置档案中 max_execution_time 设定作怪. 其中”0” 表示没有限制, 但不推荐设定为 0, 可以根据上传档案适当调整 max_execution_time 的值.
一般情况, 站群服务器的 php.ini 配置档案中的 memory_limit 与 max_execution_time 预设设定不生效的, 你可以通过 php.ini 做相应的调整.
在回到上面这个问题上, 客户 php.ini 配置并没有错误, 只是因站群服务器限制所导致. 这里只需要站群服务器的相应设定调整一下即可!(这里需要联络站群服务器管理员)
如下: 检视共享 WordPress 主机使用者应用的 PHP 版本, 以此来检视对应站群服务器 php.ini 配置档案路径. 如下:
访问测试页面:
检视到对应站群服务器 php.ini 配置档案的路径为/opt/alt/php56/etc/php.ini, 编辑该档案, 修改 upload_max_filesize 与 post_max_size 的值为 20M 即可!
这样, 使用者的 php.ini 设定就可以生效了. 再次上传 20M 及以下档案就不会有相应的限制报错了.