返回》

又拍云图片上传失败提示“图像后期处理失败”“错误信息:Uncaught GuzzleHttpExceptionClientException: ”解决办法

最近搬主题在使用图片上传的时候,突然遇到图片上传失败的问题。因为搬主题用的是又拍云上传的图片,结果提示“图像后期处理失败。如果这是一张照片或较大图像,请将其缩小到2500像素并重新上传。”然后WordPress就崩溃了,错误提示为“错误信息:Uncaught GuzzleHttpExceptionClientException”等等。这里搬主题就分享一下这个问题的解决办法。当时主要是图片上传失败,然后后WordPress台直接提示图像后期处理失败。如果这是一张照片或较大图像,请将其缩小到2500像素并重新上传。如果是英文版的话提示应该如下:英文提示:Post-processing of the image failed. If this is a photo or a large image, please scale it down to 2500 pixels and upload it again.接下来WordPress就崩溃了,收到邮件如下:错误类别E_ERROR发生在文件/a/banzhuti.com/www/wp-content/plugins/wpupyun/sdk/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php的113行。错误信息:Uncaught GuzzleHttpExceptionClientException: Client error: `HEAD http://v0.api.upyun.com/bzt-img/2020/12/1ca444cuu0.png` resulted in a `401 Unauthorized` response in /a/banzhuti.com/www/wp-content/plugins/wpupyun/sdk/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 如何解决这个问题呢?先处理第一个1、图片大于2500px的问题解决办法因为WordPress自带了一个自动处理图片的功能,当上传新图像时,WordPress将通过检查其高度或宽度是否大于来检测它是否为“大”图像big_image threshold。默认阈值为2560px,可以使用新big_image_size_threshold过滤器进行过滤。如果图像的高度或宽度大于此阈值,则将按比例缩小该阈值,并将其用作最大高度和最大宽度值。缩小的图像将用作最大可用尺寸。在这种情况下,原始图像文件存储在uploads目录中,其名称存储在图像元数组中的另一个数组键中original_image。为了始终获得原始上传图像的路径,wp_get_original_image_path()引入了一个新功能。解决办法也很简单a、清空缓存b、禁用图片过滤器在你的模板文件夹下的functions.php文件内添加如下代码//禁用WordPress大图片(2560大小)裁剪功能 add_filter( 'big_image_size_threshold', '__return_false' );c、上传前将图片宽度处理小于800pxd、增加PHP内存限制可以在站点的wp-config.php文件来增加PHP内存限制define( 'WP_MEMORY_LIMIT', '256M' );e、如果是Nginx系统的话,将client_max_body_size调大以上设置基本可以解决第一个问题。但是搬主题上传的图片很小,都是提示失败。因此将注意力转移到第二个问题上2、提示“Uncaught GuzzleHttpExceptionClientException”解决办法因为其中的问题描述说到了“resulted in a `401 Unauthorized”,也就是401未经授权,那就是权限的问题。这里搬主题将能上传的图片文件夹权限重新设置了一遍,然后又拍云的API密钥接口等全部设置一遍后,问题还是没有解决。最终搬主题想到了在问题出现的时候,服务器曾经不能访问了几十秒,难道服务器的问题?于是登陆SSH查看,终于发现问题所在。因为服务器重启了,导致服务器时间与本地时间不对,导致时间差引起函数判断错误,结果上传失败。那么接下来就解决时间问题。之前搬主题曾经介绍了相应的时间不对的问题,如下Centos7服务器时间不同步导致WordPress网站时间总是慢8个小时的解决办法那么我们只要将时间同步即可目前比较常用的做法就是使用 ntpdate 命令来同步时间,使用方法如下:#安装ntpdate yum -y install ntpdate #同步时间 ntpdate -u pool.ntp.org #同步完成后,date命令查看时间是否正确 date同步后,图片上传正常,也不报错了,问题解决。关于服务器时间不同步的问题,有时候会引起一些插件的函数错误,这里大家要注意。
THE END