從源程式編譯本章講述了在 Windows 下如何使用 Microsoft 的工具編譯 PHP。要在 CygWin 中編譯 PHP,請參考 Unix 系統下的安裝一章。 需求要編譯 PHP 需要 Microsoft 開發環境。推薦使用 Microsoft Visuaul C++ 6.0,不過 .NET 版也可以用(無論是是免費的 Microsoft Visual C++ Toolkit 還是商業版的 Microsoft Visual C++ .NET)。要釋放下載的檔案還需要一個 ZIP 檔案的解壓縮工具。Windows XP 和更新的版本中已經內建了此功能。 在開始之前,需要先下載:
最後,還需要 PHP 本身的原始碼。可以通過匿名 CVS 得到最新的開發版本,一個快照或是最新發行版本的源程式的打包檔案。 放到一起下載了所有的包後需要將它們解壓縮到適當的位置:
若果不是用 Cygwin 的話,還必須新增一個目錄 c:\usr\local\lib 並將 bison.simple 從 c:\work\win32build\bin 複製到 c:\usr\local\lib 中。
編譯 resolv.lib必須編譯 resolv.lib 庫。自己決定是需要除錯訊息(bindlib - Win32 Debug)還是不需要(bindlib - Win32 Release),但是要記住自己的選取,因為必須用同樣的模式編譯 PHP,否則會出連線錯誤。編譯適當的配置:
用新編譯系統編譯 PHP(僅適用於 PHP >=5)本節講解了怎樣用新編譯系統編譯 PHP >=5,此系統是基於 CLI 的,並且非常類似於 PHP 的 Unix 編譯系統。
開始之前要確保閱讀了放到一起一節並且已經編譯了所有所需的庫,例如 Libxml 或 ICU(PHP >= 6 中需要)。 首先應該開啟一個用於 Visual Studio 的指令行提示符,應在開始選單中能找到。標準的指令提示符可能不能用,因為沒有設定所需的環境變量。輸入類似 cd C:\work\php-5.x.x 的指令進入 PHP 源程式目錄。現在可以開始配置 PHP 了。 第二步是運行 buildconf 批處理檔案來掃瞄資料夾尋找 config.w32 來建立配置腳本。預設時此指令還會搜尋以下目錄:pecl; ..\pecl; pecl\rpc; ..\pecl\rpc。自 PHP 5.1.0 起,可以通過 --add-modules-dir 參數來改變此行為(例如 cscript /nologo win32/build/buildconf.js --add-modules-dir=../php-gtk2 --add-modules-dir=../pecl)。 第三步是配置。要檢視可用的配置選項清單,輸入 cscript /nologo configure.js --help 指令。選取了需要啟動或禁止的選項之後,輸入類似 cscript /nologo configure.js --disable-foo --enable-fun-ext 的指令。使用 --enable-foo=shared 將嘗試將「foo」增加庫編譯為共享的,可動態加載的模組。 最後一步是編譯。只需運行指令 nmake 即可。所建立的檔案(例如 .exe 和 .dll)將會放在 Release_TS 或 Debug_TS 目錄下(若果編譯的是執行緒安全版的話),或是是 Release 或 Debug 目錄。 作為可選項還可以運行 PHP 的測試套件,輸入 nmake test 指令。若果要做一個特定的測試,可以用 'TESTS' 變量(例如 nmake /D TESTS=ext/sqlite/tests test 將只執行 sqlite 測試)。要移除編譯過程中建立的檔案,可以用 nmake clean 指令。 有個很有用的選項來編譯快照:--enable-snapshot-build。此選項增加了一個新的編譯模式(nmake build-snap)。這將嘗試編譯每一個可用的增加庫(預設為共享模組模式),但是忽略個別的增加庫或 SAPI 中的編譯錯誤。 用 DSW 檔案編譯 PHP(PHP 4)自 PHP 5 起不支援用 DSW 檔案來編譯 PHP,因為有了一個更靈活的系統。不過還是可以用此方法,但要記住此系統並不經常維護,因此編譯可能會有問題。不過這是在 Windows 下編譯 PHP 4 的唯一方法。 配置 MVC ++第一步是配置 MVC++ 來準備編譯。啟動 Microsoft Visual C++,在選單中選取 Tools => Options。在對話框中選取 directories 標籤。按順序把下拉選項選為 Executables,Includes 和 Library files。其內容應類似於:
編譯對於初學者最好的上手方法是編譯 CGI 版本:
有可能通過編輯 main/config.win32.h 檔案對編譯做少量的定制。例如可以改變 php.ini 檔案的預設位置,內建的增加庫,以及增加庫的預設位置。 下一步可能想要編譯 CLI 版本,這是設計用於 PHP 的指令行模式。步驟和編譯 CGI 版本相同,只除了要選取 php4ts_cli - Win32 Debug_TS 或是 php4ts_cli - Win32 Release_TS 項目檔案。成功編譯後會在 Release_TS\cli\ 或是 Debug_TS\cli\ 目錄下找到 php.exe 檔案。 要編譯 SAPI 模組(php4isapi.dll)來將 PHP 和 Microsoft IIS 整合起來,將 active configuration 設為 php4isapi-whatever-config 並編譯所需要的 dll。. | |||