我HTTP Error
在上传大 jpg 文件(大约 30 - 40MB)时收到一条消息,我可以500 Internal Server Error
在 Chrome 开发工具网络选项卡中看到由async-upload.php
.
上传文件后出现错误。我可以看到目录中的文件wp-content/uploads
,所以问题与上传过程无关。
我想这个问题与上传文件后发生的图像大小调整过程有关。我尝试手动重建缩略图(使用几个重新生成缩略图插件)以证明问题与调整大小过程有关。他们都未能调整大图像的大小。
我在发布这个问题之前所做的事情:
- 我已将
php.ini
文件 (memory_limit = 256M
)中的内存限制增加到 256MB - 放
post_max_size = 256M
- 设置一个新的 WP 实例。没有插件,默认主题。
- 在不同的机器上测试(在 VPS 上,相同的 PHP 设置)
我关闭了
mod_security
设置:<IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule>
我还尝试更改默认图像库:
add_filter('wp_image_editors', function () { return ['WP_Image_Editor_GD', 'WP_Image_Editor_Imagick']; });
更新:
我刚刚意识到我应用的过滤器没有做任何事情。我检查了 WP 源代码,发现此过滤器的默认值为:['WP_Image_Editor_Imagick', 'WP_Image_Editor_GD']
. 我更改了顺序,但我没有安装 Image Magic 库,所以 WordPress 一直在使用 GD 库。
所以我安装了 Image Magic PHP 扩展来试一试。我还删除了过滤器,因为它的默认值对我有用。
用 Image Magic 替换 GD 库解决了这个问题。,但我还是很好奇为什么GD库不能处理这么大的图像。有没有办法以不同的方式解决这个问题?我不想依赖第三方库。我宁愿使用标准的 PHP 设置(如果将站点部署在无法安装自定义 PHP 扩展的共享主机上)。