上传大型JPG文件后,WordPress async-upload.php返回500(内部服务器错误)

时间:2016-05-06 13:20:41

标签: php wordpress file-upload media-library

上传大型jpg文件(大约30 - 40MB)时收到HTTP Error消息,我可以在{{1}返回的Chrome开发工具网络标签中看到500 Internal Server Error响应}。

上传文件后出现错误。我可以在async-upload.php目录中看到该文件,因此问题与上传过程无关。

我认为问题与上传文件后发生的图像大小调整过程有关。我尝试手动重建缩略图(使用多个重新生成缩略图插件)来证明问题与调整大小过程有关。所有这些都无法调整大图像的大小。

在发布此问题之前我做过的事情:

  • 我已将wp-content/uploads文件中的内存限制增加到256MB(php.ini
  • 设置memory_limit = 256M
  • 设置一个新的WP实例。没有插件,默认主题。
  • 在另一台计算机上测试(在VPS上,相同的PHP设置)
  • 我已关闭post_max_size = 256M设置:

    mod_security
  • 我也尝试更改默认图片库:

    <IfModule mod_security.c>
        SecFilterEngine Off
        SecFilterScanPOST Off
    </IfModule>
    

更新

我刚刚意识到我应用的过滤器没有做任何事情。我检查了WP源代码,发现此过滤器的默认值为:add_filter('wp_image_editors', function () { return ['WP_Image_Editor_GD', 'WP_Image_Editor_Imagick']; }); 。我已经改变了顺序,但我没有安装Image Magic库,所以WordPress一直在使用GD库。

所以我安装了Image Magic PHP扩展程序试试看。我也删除了过滤器,因为它的默认值适用于我。

用Image Magic替换GD库解决了这个问题。,但我仍然很好奇为什么GD库无法处理这么大的图像。有没有办法以不同的方式解决这个问题?我不想依赖第三方库。我宁愿使用标准的PHP设置(如果在共享主机上部署站点,则无法安装自定义PHP扩展)。

3 个答案:

答案 0 :(得分:3)

如果您已升级PHP版本。这可能导致旧插件这样做。同样的事发生在我身上。我将php 5.6升级到PHP 7并且发生了同样的错误。当我重新安装PHP 5.6时,它开始正常工作。

答案 1 :(得分:0)

尝试一下:

wp-config.php中进行以下更改:

define( 'WP_DEBUG', false);

收件人

define( 'WP_DEBUG', true );

为我工作!

答案 2 :(得分:0)

我已经尝试了大部分可能仍然无法正常工作的东西,毕竟我已经检查了插件文件夹已禁用并检查其是否对我有用的研究,请一一禁用插件并检查。这对我有用。谢谢:)

您可以重命名为插件文件夹名称( plugins 到 plugins_old )

谢谢