最近把博客迁移到了docker容器里面,七八年没安装过PHP的依赖了,才发现php这个依赖真的要人半条命,折腾了半天,还是python依赖方便。
PHP和wordpress官方都提供了docker镜像,我采用的是PHP官方的镜像。
一开始使用的PHP7.1依赖安装好以后,登录后台提示不是安全的版本,又切换到了PHP7.4,但是安装7.1的依赖安装方式无法成功安装,不是说PHP是世界上最好的语言吗?
主要的问题表现就是,博客缩略图无法显示,如图:
开启PHP详细报错提示:
Fatal error: Uncaught Error: Call to undefined function imagecreatefromjpeg() in /xxx/timthumb-config.php:1041 Stack trace: #0
这个问题主要是缺少imagick和libjpeg库,通过dockerfile重新编译就行了。
# 安装imagick wget -P /tmp/ https://pecl.php.net/get/imagick-3.7.0.tgz &&\ tar -zxvf /tmp/imagick-3.7.0.tgz -C /tmp &&\ mkdir -pv /usr/src/php/ext &&\ mv -f /tmp/imagick-3.7.0 /usr/src/php/ext/imagick &&\ rm -rf /tmp/imagick-3.7.0.tgz &&\ # 安装jpeglib wget -P /tmp/ http://www.ijg.org/files/jpegsrc.v9c.tar.gz &&\ tar -zxvf /tmp/jpegsrc.v9c.tar.gz -C /tmp && \ cd /tmp/jpeg-9c &&\ ./configure --prefix=/usr/local/lib/libjpeg --enable-shared &&\ make && make install &&\ rm -rf /tmp/jpeg-9c &&\ docker-php-ext-configure gd --with-jpeg=/usr/local/lib/libjpeg &&\ docker-php-ext-install imagick&&\ docker-php-ext-enable imagick