一般来说你使用的主机会限制你上传文件的大小,在WordPress的媒体文件上传可以看到,大多数都是2MB。如果是图片的话可能会还够用,但是如果是其他文件就不一定够用了。
增大可以上传的文件大小的话,则执行如下命令
1 |
sudo vim /etc/php5/apache2/php.ini |
搜索 “upload_max_filesize ”,把默认的 2M修改为需要的大小。
如果这个时候,重启了Apache,会发现上传的大小被限制在了8M,这个时候需要继续修改 “post_max_size = 8M”到指定的大小才可以。然后,重启Apache2。
如果你使用了CGI或者FastCGI ,这么修改可能没有效果。
如果用到了CGI,则需要修改 “/etc/php5/cgi/php.ini”。
如果用到了CLI则需要修改 “/etc/php5/cli/php.ini”。
如果用到了Apache2 PHP FPM模块,需要修改 “/etc/php5/fpm/php.ini”。
如果实在不知道,那么就都修改一下好了。
对于使用FastCGI的情况,按照上面的修改完成后,WordPress的界面上应该已经显示为正确的大小了,但是当你真的上传一个比较大的文件的时候,却可能一直失败,抓包分析之后,发现HTTP返回了500错误。这个时候如果你去看Apache2的日志,却发现没什么太明显的错误信息。主要这么一条比较可疑
1 |
[warn] [client x.x.x.x] mod_fcgid: HTTP request length 139072 (so far) exceeds MaxRequestLen (131072), referer ... |
这个被标记为警告,实际上,这就是返回500错误的原因。产生这个错误的原因在于FastCGI限制默认的请求大小为131072字节,而我们上传文件如果超过这个大小的现在,就直接返回异常了。
修改FastCGI的配置文件即可
1 |
sudo vim /etc/apache2/mods-enabled/fcgid.conf |
可以看到里面内容大致如下:
1 2 3 4 5 6 7 |
<IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi .php FcgidConnectTimeout 120 DefaultMaxClassProcessCount 10 MaxRequestLen 131072 IPCCommTimeout 300 </IfModule> |
此时应该修改MaxRequestLen 到一个比较大的数字即可,注意这个数字的单位是字节,要自己换算一下,要比自己设置的上传文件的大小要大一些才可以。