Windows上編譯PHP+Imagick

來源:互聯網
上載者:User

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的相關資訊。

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.