重新編譯GD擴展

問題

看過我的這篇編譯LNMP文章的同學應該知道,我的php是編譯安裝的,並且gd庫是採用靜態編譯的。下面是當時編譯php的參數。

./configure --prefix=/usr/local/php \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--enable-fpm

但是今天就出現了一個問題,我的gd庫中沒有libjpeg支持,看看錯誤提示,不能使用imagecreatefromjpeg方法了。

Fatal error: Call to undefined function imagecreatefromjpeg()  

解決方法

當然要重新編譯gd啦,但是又由於我採用的是靜態編譯,所以必須要重新編譯php,然後編譯gd,最後在php.ini文件中添加擴展so文件。

  • 1、重新編譯php

重新編譯php,不要靜態編譯gd庫,也就是說,不要使用--with-gd這樣的參數了,使用下面的編譯格式。

./configure --prefix=/usr/local/php \
--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--enable-fpm

make && make install
  • 2、編譯libjpeg v9b
cd /usr/local/src
wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz
tar xzvf jpegsrc.v9b.tar.gz
./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
make && make install
  • 3、重新編譯gd擴展,給gd擴展添加上libjpeg
cd /usr/local/src/php-5.6.30/ext/gd #gd的源碼目錄
/usr/local/php/bin/phpize #生成configure命令

./configure --with-php-config=/usr/local/php/bin/php-config -with-png-dir --with-freetype-dir --with-jpeg-dir=/usr/local/libjpeg -with-zlib-dir --with-gd 

make && make install#編譯gd

此時會提示:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226(這個路徑就是gd擴展的路徑)

  • 4、添加gd擴展
cd /usr/local/php
vim lib/php.ini

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/gd.so #添加新行
  • 5、重啓服務器

我的是Nginx,所以只需要重新啓動php-fpm就行了,看看是否有jpeg支持了。

這裏寫圖片描述

發佈了122 篇原創文章 · 獲贊 40 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章