CentOS下给PHP安装GD扩展的惨痛经历

从昨天开始,一直安装,估计安装了有10个小时吧。一直在重复的phpize,重复的make install、以及make uninstall。对于网上的教程,看了好多,中文的、英文的,自己的问题就是无法得到解决。

第一个问题:我的Linux上安装了两个php,天杀的,折磨的我将近疯了。为啥我会安装两个php,因为搭建网站初期,我很懒、很欠收拾,想使用yum简单搞定就行啦。但是yum操作之后,事情的发展却超出了我的预期、竟让我无法Hold,我也真心hold不住了,yum操作安装之后的php散落到好多地方,我已经彻底晕了。每次都是whereis php或者php -i看看这,看看那。在我要添加mysql_pdo扩展的时候,我已经无法维护这个php了,phpize到底在哪,敢不敢出来让我灭了。原来yum安装的是php的精简版,虽然大的框架都在。

我重新编译安装php,找啊找啊,终于按照网上的教材将php编译了。面临同样的问题,我靠,mysql_pdo在编译的时候没有指定默认安装,我已经疯了。当时我还不知道在源码的目录下有/ext这个鬼,我靠,我折腾啊折腾,最终还是失败了。只能出杀招:重新编译。然后,风雨飘摇的内心终于平静了片刻。

之后装redis扩展,有了之前的经验教训,装的还比较得心应手。谁曾料想到:php.ini文件在哪里?我要追加extension=redis.so,但是编译完的ini在那个目录下啊?谁能告诉我.....算了,我直接拷贝一份yum安装的php.ini,但是我TM拷贝到那个文件路径下啊?我又是phpinfo、又是php -i | grep \.ini,终于,我又一次战胜了绝望。好了网站运行起来吧。网站确实运行起来了,我很欣慰....

然后我决定安装gd,这次我是真的跪了。gd相关的东西freetype、libjpeg还有libXmp等等,炸了!我就是一个不吸取教训的人,一如既往的、不到黄河心不死的使用yum安装。准备好了一切可能的环境,我进入/ext/gd目录,等等,我的电脑上有两个php,我每次调用的都需要指定一个很长的路径/usr/local/php/bin/php,檫,我终于不想忍了。rpm -qa | grep php,找到了所有安装的php包,根据依赖关系一层层的rpm -e掉,我也是才知道,原来yum remove这个鬼东西卸载的是如此不干净。啊!我的世界终于干净了。直接执行php -i,靠,不能执行了。还没有配置php环境变量,算了,直接修改我路径环境的path吧,反正我的网站也就我一个人在管理。export "/usr/local/php/bin/php:$PATH",好吧,回到正题,这个小插曲只是黑暗来临的前奏。无论我怎么安,都搞不定这个gd,每次编译完成php -m,都没有gd扩展。每次我执行,都是报因为gd.so中有一个错误,所以不能动态加载。靠,我想起了我的一个修改,之前因为老编译不过,我修改了一个sed xxx什么的命令,就是因为某个常量找不到,然后进行了一下替换。网络搜索就是从垃圾中捡芝麻,垃圾越来越多,芝麻却越来越少,哎。怎么办?gd目录下的文件已经被我认为的修改过了,我又不知道怎么还原回去。这里也说明一点,在修改某个文件的时候,最后copy一个backup以防万一。我能怎么办,从新下载一份源码呗。根据php的版本,又去官网下载了一份源码,从新编译,我靠,这次居然顺顺利利的过了,我在想,为什么之前有那么多的问题?./configure --with-php-config=/usr/local/php/lib/php-config,我喜出望外,感觉人生豁然开朗。擦, php -i | less查看了php目前的支持扩展,gd下没有JPEG。为什么会这样,啊啊啊。人生就是无数个从头来过,我删除了所有我yum安装,天知道他们安装到哪里了,我根据网络的源码安装,手动下了libjpeg,下载freetype,天啊,我一次次的编译,一次次的php -i | less,一次次的make ubinstall,make clean,一次次的删除gd.so。我已经开始怀疑人生了。实在是不行了,出狠招吧,我重新编译了一遍php,然后又执行了一遍,无果。

我放弃了中文网站,翻来覆去,也就那么3篇,却被各个网站转过来转过去,我真是无力吐槽了。耐心的看应为,我靠,中国搜索到的英文确实有限啊。我又一遍一遍的读那几篇文章,生怕错过什么细节。是不是jpeg的版本不兼容啊,我硬生生下载了6、8、9三个版本,一次一次的删,一次次的安装,还是不行。生活就是这样,越是想干什么越是不会。是不是./configure后面的参数有问题啊,比如没有加--enable-shared,跟的--with-jpeg-dir=/usr/local/jpeg或者直接写--with-jpeg-dir,我就跟一个无头苍蝇一样。网上说建立软连接,可能是路径什么不对,然后我一个一个建立软连接ln -sv /usr/local/jpeg/lib/libjpeg.8.××××,哎,到头来还是无功而返。然后我开始注意./configure后的编译信息,认真看make test后的检查信息。我擦,make test的结果正常了。天啊,我赶紧写了php脚本,合并了两张图,正常,perfect。

总结:作为一个开发,做运维的活,为了节省时间,还是的找专业的人来搞这些,不然就是一个无头苍蝇乱撞。对于gd的安装,每次编译都记得要make uninstall,make clean,否则可能unchanged。然后就是能不使用yum安装的,一定别使用yum安装。

CentOS下给PHP安装GD扩展的惨痛经历_第1张图片

你可能感兴趣的:(CentOS下给PHP安装GD扩展的惨痛经历)