Centos上的图形处理一直都是很抽风的事情,Java很麻烦,C很麻烦,连PHP也很麻烦,PHP很抽风的是,它没有任何提示。
当你把PHP runtime从5.4升级以后,Centos自带的GD库就fail了,因为OS中最高的版本不超过2.1,但是,从PHP5.5开始,默认支持的GD库就已经是2.1了,低版本的GD库调用不了,而且没有任何提示,之前很长一段时间我纠结于Wordpress的图形处理功能突然失效无法生成thumbnail,虽说使用ImageMagick的plugin解决了部分的问题,但总觉得有个bug在那里,却找不到原因,也想过是GD的问题,但从未想过是版本的问题。
下面我们来升级Centos中的GD,虽说我最爱的OS是FreeBSD,但是很多新功能在FreeBSD上不受支持,很是让人困扰。
首先download source code,
cd /tmp
wget https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz
tar zxf gd-2.1.1.tar.gz
cd libgd-gd-2.1.1
GD的source code是多平台一个package发布的,没有默认的configure,所以根据docs提示我们需要多几个步骤,当运行autoconf报错的时候,可能是缺少aclocal,automake,关键的一步是当automake提示–add-missing的时候,需要使用autoreconf -i,所以发布一个跨平台的source code package,是让人多么困扰的idea。当autoreconf -i之后,就可以正常configure和make了,和普通的编译没有什么区别,这里我们prefix在/usr/local/gd,很自然,我们在编译PHP的时候就需要添加类似的参数了, ./configure –with-gd=/usr/local/gd,最后出来的大概就是这样一个效果:
如此之后,PHP5.5和PHP5.6中的GD才会正常operation,否则都是a piece of shit,即使phpinfo里面提示bundled正常,那也是一坨屎,可惜的是Wordpress默认只支持GD,如果支持ImageMagick应该更好些。
如下,这是木有用的。