toxic

备忘录

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

这几天弄一个项目的服务器,一同事突然告诉我报错误了 

Java代码  收藏代码
  1. :Fatal error: Call to undefined function imagecreatefromjpeg()  


解决办法: 
[size=large] 
1,重新安装php不要安装gd 
[size] 

Java代码  收藏代码
  1. #./configure --prefix=/usr/local/php --with-config-file-path=/etc \  
  2. --with-mysql=/usr/local/mysql --with-iconv-dir \  
  3.  --with-zlib --with-libxml-dir --enable-xml --disable-debug --disable-rpath \  
  4. --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop \ --enable-sysvsem --enable-inline-optimization --with-curl \  
  5. --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm \  
  6. --with-iconv=/usr/local --enable-force-cgi-redirect --enable-mbstring  --with-openssl \  
  7. #make && make install  


2,分别在/lib、/usr/lib、/usr/local/lib 下面都加上libjpeg.so库(软连接就行) 

Java代码  收藏代码
  1. ln -sv /usr/lib/libjpeg.so.62.0.0 /lib/libjpeg.so  


3,进入php源码下的ext/gd目录下,编译安装gd,注意:如果有gd.so.要删除了 

Java代码  收藏代码
  1. #./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir \  
  2. --with-freetype-dir  
  3. #make && make install  


4,配置php.ini 加入 

Java代码  收藏代码
  1. extension=gd.so  


重启nginx,php-fpm(貌似只重启php-fpm就可以了) 


解决过程: 
网上一查原来是gd不支持jpeg,打开phpinfo一看果然。 
一、于是就重新编译,安装php 

Java代码  收藏代码
  1. ./configure --prefix=/usr/local/php --with-config-file-path=/etc \  
  2. --with-mysql=/usr/local/mysql --with-iconv-dir \  
  3. --with-gd --enable-gd-native-ttf  --with-freetype-dir --with-png-dir --with-jpeg-dir  \    
  4. --with-zlib --with-libxml-dir --enable-xml --disable-debug --disable-rpath \  
  5. --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop \ --enable-sysvsem --enable-inline-optimization --with-curl \  
  6. --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm \  
  7. --with-iconv=/usr/local --enable-force-cgi-redirect --enable-mbstring  --with-openssl \  
  8.   
  9. make && make install  


再查看phpinfo,结果还没有。 
二、网上搜素 “gd支持jpeg” 结果还真有很多人遇到同样的问题。 
1,有人说:php自带的gd不支持 
2,有人说:需要自己安装jpeg 
3,还有就是重装 
于是,先查自己jpeg安装了没有 

Java代码  收藏代码
  1. #rpm -ql libjpeg  


发现自己安装了libjpeg, 而且i386和x86_64都安装了(其实一个就够了)。 
这就纳闷了呀,自己明明安装了呀。想想自己安装的gd是php自带的。于是就到php-5.2.17/ext/gd下面自己安装,运行以下: 

Java代码  收藏代码
  1. #phpize  
  2. #./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir \  
  3. --with-freetype-dir  
  4. #make && make install  


在php.ini 里配上“extention = gd.so”重启nginx和php-fpm(如果你安装的是apache,就只重启apache就行了) 
提示:gd already load 
哦。。。刚才php已经安装上了,还得重装php,把gd相关的参数去掉(上面第三行) 

Java代码  收藏代码
  1. #./configure --prefix=/usr/local/php --with-config-file-path=/etc \  
  2. --with-mysql=/usr/local/mysql --with-iconv-dir \  
  3.  --with-zlib --with-libxml-dir --enable-xml --disable-debug --disable-rpath \  
  4. --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop \ --enable-sysvsem --enable-inline-optimization --with-curl \  
  5. --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm \  
  6. --with-iconv=/usr/local --enable-force-cgi-redirect --enable-mbstring  --with-openssl \  
  7. #make && make install  


重启nginx、php-fpm, 
gd已经加载了,可它大爷的还没有jpg。。。。 
那肯定是安装gd的时候出的问题。于是到php-5.2.17下运行: 

Java代码  收藏代码
  1. #make clean  
  2. #cd ext/gd  
  3. #phpize  



生成configure文件,调试configure文件发现,找libjpeg.so默认到/usr/local/lib下面(貌似各个电脑情况不一样).于是吧/usr/local/lib下做了个软连接,重新编译安装gd,终于成功了。终于弄清楚了,花了我整整一天啊

posted on 2014-11-03 19:54  toxic  阅读(670)  评论(0编辑  收藏  举报