问题
wodpress不能裁切图片,提示如下:
您的服务器不支持图像旋转功能
查阅Nginx日志,发现有如下报错:
call_user_func_array() expects parameter 1 to be a valid callback, function ‘imagejpeg’ not found or invalid function name in class-wp-image-editor.php on line 420 .
解决问题
Nginx日志关键信息function 'imagejpeg' not found
。
imagejpeg
是PHP GD库的函数,wodpress处理jpeg图像时会调用。
imageXXXX
函数一般都是GD库函数,处理方法通用。
检查GD库支持
phpinfo();
搜索GD库一栏,如果有GD库支持,会显示如下。
如果安装了GD库,在该栏中检查是否有jpeg支持。
没有显示jpeg这一行,则说明GD没有jpeg库。
没有安装GD库也没关系,下面的步骤会重新编译GD库。
安装jpeg库和其他库
我的php7安装在alpine linux
中,使用apk安装软件。
进入容器,执行安装命令。
# 这里安装了freetype库、jpeg库、png库,按需选择
$ apk add --update --no-cache \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev
安装了freetype
,libjpeg-turbo-dev
,libpng-dev
。
添加GD库编译选项
$ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
重新编译安装GD库
$ docker-php-ext-install gd
(可选)安装imagick支持
有时,WordPress会在GD与imagick中二选一来执行图片操作。
当然,只安装GD库也行。
$ apk add --update --no-cache autoconf g++ imagemagick-dev libtool make pcre-dev
$ pecl install imagick
$ docker-php-ext-enable imagick
$ apk del autoconf g++ libtool make pcre-dev
安装了imagick扩展并启用。
重启PHP容器
退出到宿主机中,使用如下命令重启PHP容器。
docker restart f12da14123(使用docker ps 获取的容器id)
引用资料
- [头图]【Docker,Inc.】Docker Docker Logo
- [脚本]【Github】m2sh PHP7>Alpine>DockerFile