如何提高 WordPress 最大上传文件大小并避免 HTTP 错误

这个问题其实是我在昨天写毕业文章的时候遇到的,但相信也有同样跟我遇到这个问题的人,所以我把外网上搜到的解决方案写在这里,希望能帮助到你。

众所周知 WordPress 对文件最大的上传大小有限制,比如下图中我的 WP 只能上传最大 2 MB 的文件。虽然大部分时间这个大小是足够的,但有时候我想上传一些高清的图片,这个时候 2 MB 就显得捉襟见肘了。

在未修改配置文件之前,我的WP只能接受 2 MB 以下的文件

一圈 Google 之后,大部分网上的教程都提到了修改 .htaccessphp.ini 的办法来提高这个上限,下面我将这两个办法都列举出来:

首先 SSH 连接到你的服务器,并编辑你网站根目录的 .htaccess 文件(例如 /var/www/example.com/src/.htaccess)。在里面加入以下配置:

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

修改后不需要重启任何东西,新的配置已经生效。

 

第1行和第2行允许上传最大 64 MB 的文件,而第3、4行允许最高300秒的上传时间,避免因为超时而上传失败。你可以修改这些参数来适应你的需要。如果这些配置已经存在于你的 .htaccess,你需要将他们先行删除。

在下面的截图里,你可以看到 WordPress 已经开始接受 64 MB 的文件了。

你也可以通过修改 php.ini 文件来达到同样的目的。这个文件通常在 /usr/local/etc/php/php.ini,你可以通过运行 php --ini 命令来确认它的具体位置(如果你是通过 Docker 安装的 WordPress 的话,php 会位于你的wp实例里)。

在你的 php.ini 里,添加或者修改以下配置:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

重启 php 服务后新的配置就会生效。

不过如果你是用 Nginx 后端的话(比如我的这个wp),虽然网页上显示最大上传大小是 64 MB,但在上传大于 2 MB 的文件后会出现“HTTP 错误”。进一步调查发现大于 2 MB 的文件会导致 Nginx 后端报错 Error 413 Request Entity Too Large。顾名思义这个错误是 Nginx 无法接受大于 2 MB 的请求,为此我们需要修改 Nginx 的配置使其接受更大的文件。

打开你的 nginx.conf 文件,一般位于 /etc/nginx/nginx.conf 或者 /usr/local/nginx/conf/nginx.conf。在http {} 方块里加入以下内容:

client_max_body_size 64M;

你可以修改这个数字以适应你的需求。

下图中我在 nginx.conf 里加入了最大 64 MB 上传的配置

保存并重启 nginx 服务后(systemctl restart nginx),WordPress 现在应该已经能正常上传 64 MB 以内的文件了。感谢 WordPress 论坛的 Nanhe Kumar 提出的解决方案。

相关内容