使用Wordpress REST API上传图片遇到错误码500,尝试在PHP配置中增大memory_limit,以及在wp-config.php中增大memory size,都无法解决问题。
最后发现是PHP Fatal error: gd-webp cannot allocate temporary buffer 。当上传图片时,WordPress的GD库尝试处理WebP格式图片时内存不足。
解决方法:PHP安装扩展imagick.
若可视化安装失败,可通过源码编译,步骤如下(以 PHP 7.4 为例,替换为你的 PHP 版本):
-
下载对应版本的 Imagick 扩展源码(推荐从 PECL 官方下载,匹配 PHP 版本):
# 下载Imagick扩展(版本可根据PHP版本调整,如3.7.0兼容PHP 7.0+,4.0.0兼容PHP 8.0+) wget https://pecl.php.net/get/imagick-3.7.0.tgz # 解压源码包 tar zxvf imagick-3.7.0.tgz cd imagick-3.7.0 -
配置编译参数(指定 PHP 路径,宝塔默认路径固定):
# 调用对应PHP版本的phpize /www/server/php/74/bin/phpize # 配置编译路径 ./configure --with-php-config=/www/server/php/74/bin/php-config -
编译并安装:
# 编译(-j 后面跟服务器CPU核心数,加快编译速度,如4核则写-j4) make -j2 # 安装 make install -
启用扩展(宝塔已自动配置,若未生效手动添加):
# 编辑对应PHP版本的php.ini文件 vi /www/server/php/74/etc/php.ini # 在文件末尾添加一行(若已存在则无需重复添加) extension=imagick.so # 保存退出(vi编辑器:按Esc,输入:wq回车) -
重启 PHP 并验证:
# 宝塔重启PHP 7.4(其他版本替换74) /etc/init.d/php-fpm-74 restart # 验证扩展是否生效 /www/server/php/74/bin/php -m | grep imagick # 若输出imagick,说明扩展安装并生效成功
Leave a Reply