问题

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)

引用资料

  1. [头图]【Docker,Inc.】Docker Docker Logo
  2. [脚本]【Github】m2sh PHP7>Alpine>DockerFile

我来吐槽

*

*

2位绅士参与评论

  1. c0sMx06-24 13:27 回复

    (噫~

  2. littleplus06-03 00:22 回复

    儿童节你就给我看这个?