由于文件大小导致上传失败有两中报错方式,一种是php的问题,一种是nginx代理服务器的问题。
1、php问题
1、在WordPress容器里的/usr/local/etc/php/conf.d目录是php的相关配置,我们可以新建一个uploads.ini的配置文件,里面是上传相关的配置。
file_uploads = On
memory_limit = 500M
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 600
2、有时候可能没有映射上面那个目录,所以修改起来不方便。我们可以利用docker文件系统的特性,直接在主机的目录下面改,当然方法多种多样。我不想在diff下面创建长串的目录,我想利用docker自动生成,然后直接在主机修改。
(1)首先进入wordpress容器,生成我们将要修改的文件
(2)ctrl+p ctrl+q 退回到主机。这回就可以在主机操作了。直接使用find的命令查找我们刚才创建的文件。使用diff文件夹下面的,不要用merged下面的。可以查一下diff相关的内容。
(3)打开uploads.ini输入我们的内容保存即可。
(4)这时还没有生效。我试了下重启wordprss容器好像也不行,重起docker服务可以。如果在windows里面使用phpstudy的话,直接改完就生效了。
systemctl restart docker
2、nginx代理服务器问题
或下面问题:
从服务器收到预料之外的响应。此文件可能已被成功上传。
请检查媒体库或刷新本页。
需要在配置文件中的server中location里面添加一句
client_max_body_size 200m;
nginx -s reload后生效。
3、apache服务器问题
除了上面两处会影响文件上传的成功与否之外,apache服务器也会有相应的限制。
输出错误如下,和nginx那个一样,所以很多人会疑惑已经修改了nginx,为什还会有错误,就是这个原因:
从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。
可以看见phpstudy,里面的apache有明确限制,但是在这里改好像不生效,具体原因没有看。
我们可以在apache的配置文件中去改。
我的位于:
C:\phpstudy_pro\Extensions\Apache2.4.39\conf\httpd.conf
然后更改下面的部分,这个单位是字节,我图中的是500M。改完这个在phpstudy中重启apache服务即可。
我看网上有的人在这个文件中添加
LimitRequestBody 10485760
对我的不管用。
还有的人改/wp-includes/default-constants.php文件。对我也不起作用。