PHP通過Imagick擴充來實現對圖片的處理,Imagick擴充是基於ImageMagick的,但Imagick擴充不是PHP內建的,如果使用者想使用它,要麼尋找Windows的Binary檔案,要麼自己編譯一個。如果在Linux上,這些都不是問題。但Windows上相關的資料少之又少。下面簡單介紹一下本人的編譯過程。
準備過程:
1. 下載PHP原始碼和編譯工具
PHP的原始碼可以從www.php.net上下載,具體的可以到download頁面(http://www.php.net/downloads.php)上尋找。
然後到documentation頁面(http://www.php.net/docs.php)上尋找編譯過程的協助,具體頁面是:http://www.php.net/manual/zh/install.windows.building.php。
可以從這個頁面上下載相關的編譯工具:win32build和bindlib_w32,並將他們解壓縮到原始碼放在同級的目錄中,具體目錄結構如下:
+--BuildRootDir| || +--bindlib_w32| | || | +--arpa| | || | +--conf| | || | +--...| || +--php-5.x.x| | || | +--build| | || | +--...| | || | +--win32| | || | +--...| || +--win32build| | || | +--bin| | || | +--include| | || | +--lib
將win32build\bin目錄添加到系統內容變數Path中,這一步也可以在編譯的時候指定。此外,需要在C盤建一個目錄C:\usr\local\bin,將win32build\bin\目錄下的bison.simple拷貝到此目錄中。
完成上述工作後,編譯resolv.lib。此檔案的VC工程檔案位於:bindlib_w32下,可以使用VC開啟工程檔案然後編譯即可,將編譯產生的resolv.lib拷貝到win32build\lib目錄下(如果此檔案已存在,覆蓋之)。
至此,PHP的編譯準備工作已完成。
2. 下載ImageMagick安裝包並安裝
到ImageMagick首頁(http://www.imagemagick.org/script/index.php)上下載Windows的Binary檔案(http://www.imagemagick.org/script/binary-releases.php?ImageMagick=ir9ijldaeppff0fudjv4kmfcj0#windows),請選擇dll版本,因為只有dll版中有development相關的檔案。安裝dll版本,安裝過程中一定要勾選:install development headers and libraries for C and C++和Add application directory into your system path兩個選項。
3. 下載Imagick原始碼
到ImageMagick的Program interface頁面上(http://www.imagemagick.org/script/api.php)尋找PHP介面Imagick。然後下載(http://pecl.php.net/package/imagick)並解壓到php原始碼目錄下的ext目錄中(BuildRootDir/php-5.x.x/ext/imagick)。開啟imagick目錄下的config.w32檔案,替換imagick_read.c為imagick_file.c。此處很可能是imagick的一個Bug。切記。
4. 配置Windows
如果你的Windows系統不是英文版或者預設開啟檔案的編碼不是English(US),編譯過程很可能會fail。因此需要對Windows系統的配置稍作改動,具體為:開啟控制台,選擇地區與語言,找到非Unicode程式的語言項,然後配置預設使用語言為英語(美國)/English(US)。
經過以上4步之後,終於可以進行編譯了。
編譯過程:
使用VC的Command Prombt進入字元介面(cmd介面),然後cd到php的目錄,檢查一下path,看系統path中是否包括win32build\bin目錄,如果沒有包含進來,需要執行:set path=BuildRootDir\win32build\bin;%path%.
然後在php的原始碼目錄下執行buildconf.bat檔案用於產生configure.js檔案。然後系統提示鍵入"configure --help”.此時可以直接鍵入configure --enable-snapshot-build --disable-zip --disable-zlib --with-imagick=shared
注意以下最後產生的報告中是否包含imagick shared這樣的一行。如果有,表示configure已經成功。可以鍵入nmake snap進行編譯了。建議使用nmake snap >build.log將編譯輸出重新導向到一個檔案中。因為編譯過程太長,使用記錄檔方便日後檢查。
編譯完成之後會有一個Release_TS目錄,下面會有php-5.x.x(5.x.x是你的php版本號碼)和3個zip檔案。
編譯的最終結果就位於php-5.x.x目錄中。可以將它Copy到你需要的位置使用它。
測試編譯結果:
以下是phpinfo()返回的關於imagick的相關資訊。