這兩天在使用wordpress的編輯圖像功能時遇到一個問題,發現jpeg格式的圖檔在上傳之後無法編輯,以為是代碼的問題,後來重新安裝wp後發現問題依舊,就猜想是不是環境的問題,于是就檢視phpinfo的結果,發現在gd子產品下ibjpeg version unknown,不能識别jpeg的版本,在網上搜尋一番,終于找到了結果,拿來和大家分享,希望對有同樣問題的同學有幫助。
這個原因是由于gd庫沒有解析jpeg的版本,這就需要重新編譯php和gd庫擴充
首先需要編譯安裝 freetype,libpng,jpegv9,和gd2 安裝過程就不在贅述
然後在編譯php的時候将--with-gd=/usr/local/gd2/ 替換成--enable-gd-native-ttf 這個選項,來進行編譯,編譯成功後進入源代碼檔案夾内,進入ext/gd/libgd檔案夾下,修改gd_jpeg.c檔案,大約在111行左右
将switch内的内容替換
switch(JPEG_LIB_VERSION) {
case 62:
return "6b";
break;
case 70:
return "7";
break;
case 80:
return "8";
break;
case 81:
return "8a";
break;
case 82:
return "8b";
break;
case 83:
return "8c";
break;
case 84:
return "8d";
break;
case 90:
return "9";
break;
case 91:
return "9a";
break;
case 92:
return "9b";
break;
case 93:
return "9c";
break;
case 94:
return "9d";
break;
default:
return "unknown";
}
然後進入到上級目錄内,開始編譯gd擴充
/usr/local/php/bin/phpize
然後 ./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-gd編譯完成
然後在php.ini中添加一行extension=gd.so
重新開機apache服務,就會看到在libjpeg version 後顯示的不再是unknown了 ,問題解決了