Democracy Dies in Darkness

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

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

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

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

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

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

1.1 修改 .htaccess

首先 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 的文件了。

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

1.2 修改 php.ini

你也可以通过修改 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 服务后新的配置就会生效。

2. Nginx:修改 nginx.conf

不过如果你是用 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;

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

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

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

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

点赞

说点什么

avatar
10000

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
订阅