首頁 php教程 php手册 Windows上编译PHP+Imagick

Windows上编译PHP+Imagick

Jun 14, 2016 am 12:02 AM
imagick php windows 程式碼 開源 程式設計 程式設計語言 編譯 軟體開發

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的相关信息。

Windows上编译PHP+Imagick

  

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1252
24
如果session_start()被多次調用會發生什麼? 如果session_start()被多次調用會發生什麼? Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

C的未來:改編和創新 C的未來:改編和創新 Apr 27, 2025 am 12:25 AM

C 的未來將專注於並行計算、安全性、模塊化和AI/機器學習領域:1)並行計算將通過協程等特性得到增強;2)安全性將通過更嚴格的類型檢查和內存管理機制提升;3)模塊化將簡化代碼組織和編譯;4)AI和機器學習將促使C 適應新需求,如數值計算和GPU編程支持。

C:死亡還是簡單地發展? C:死亡還是簡單地發展? Apr 24, 2025 am 12:13 AM

1)c relevantduetoItsAverity and效率和效果臨界。 2)theLanguageIsconTinuellyUped,withc 20introducingFeaturesFeaturesLikeTuresLikeSlikeModeLeslikeMeSandIntIneStoImproutiMimproutimprouteverusabilityandperformance.3)

怎樣在C  中處理高DPI顯示? 怎樣在C 中處理高DPI顯示? Apr 28, 2025 pm 09:57 PM

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

作曲家:通過AI的幫助開發PHP 作曲家:通過AI的幫助開發PHP Apr 29, 2025 am 12:27 AM

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

session_start()函數的意義是什麼? session_start()函數的意義是什麼? May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

怎樣卸載MySQL並清理殘留文件 怎樣卸載MySQL並清理殘留文件 Apr 29, 2025 pm 04:03 PM

要安全、徹底地卸載MySQL並清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務;2.卸載MySQL軟件包;3.清理配置文件和數據目錄;4.驗證卸載是否徹底。

幕後:什麼語言能力JavaScript? 幕後:什麼語言能力JavaScript? Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

See all articles