[WordPress]大尺寸图片上传后报500程序错误

在之前已经发过了一篇关于修改大尺寸图片的文章:[WordPress]大尺寸/大文件图片附件上传失败

但是今天上传大尺寸遇到了新的问题,报的不是413错误,也没有任何错误提示。但是在两周前用户发现上传过相同尺寸的图片,并且正常上传;遂跟踪了一下最近的改动;

发现大概是两周前,为了实现图片相关的功能引入了GD的扩展,就猜测大概是调用到GD的函数时出现错误了,便开始继续追查下去。

wp-admin/async-upload.php跟踪到调用_wp_image_editor_choose的方法时,发现会进行尺寸调整,并且可选两个编辑类分别是WP_Image_Editor_ImagickWP_Image_Editor_GD

但是在上一篇的文章内已经表明根本就不想要WP去帮我编辑尺寸,因为在PHP内调整尺寸需要引入图片到内存里,如果是大尺寸图片会导致单个用户线程内存变大,所以我只是喜欢它帮我上传到服务器,后续有需要再通过CDN的调整大小就好了。

好在这个位置,WP提供了fitler让我们修改编辑类,这种需求情况下我就不需要图片编辑类了,所以在我的插件加上以下代码:

add_filter('wp_image_editors',	'__return_empty_array');

保存后上传就没问题了~

但是还是有一个问题困扰着我就是为什么没有报错信息可以查看到,点进到编辑类里面看

WP_Image_Editor_GD->load()的函数里面看到,在调用imagecreatefromstring的方式时前面加上了@了禁止异常报错。

这就怪不得一直记录不到报错信息了,去掉符号后再上传调用,发现报了内存溢出的错误,看来是内存不够用,但是不想分配了,按上面的解决方法处理了,把上传问题解决了。