PHP7 windows增加自訂擴充功能和編譯PHP原始碼
需要用到的材質
推薦教學:php7教學
①決定需要編譯的版本,查看PHPINFO,確定PHP版本,VC版本和PHP位數。根據PHP VC版本下載對應的Visual Studio或編譯器,圖下博主的版本是VC15 需要下載Visual Studio 2017版本
②準備PHP原始程式碼依自己需要擴充的版本下載對應的WINDOWS原始碼下載位址(https://windows.php.net/download/)
③下載PHP-sdk套件(點選下載)(https://github.com/microsoft /php-sdk-binary-tools)
④本地需要有可以使用的PHP,並且配置了環境變數
⑤將下載的PHP-sdk存放後,將/bin目錄配置環境變數
開始操作
①依版本執行處理腳本,部落客是VC15 X64,所以執行php-sdk-vc15-x64.bat,如果沒有下載對應VC版本的Visual Studio和編譯器,處理腳本只會閃一下然後退出。
成功運行處理腳本
#②執行命令phpsdk_buildtree phpdev,phpdev根據自己的喜愛可以修改(只是一個名稱)。執行完成後phpsdk_buildtree 腳本將根據目前使用的VC 版本建立路徑,並切換到新建立的目錄
裡面會有一個deps資料夾,暫時先不管,把我們準備好的PHP原始碼放入deps同級目錄
#進入解壓縮的php 原始碼目錄,運行phpsdk_deps -u 下載依賴包,網速太慢的朋友可以跳過這一步
③添加自定義PHP擴展
進入源代碼/ext 找到ext_skel_win32.php,注意:PHP7.3版本沒有這個文件,可以直接使用ext_skel
PHP7.3版本可以用
#PHP7.2就比較苦逼了,因為這個他是在運行LINUX腳本,windows沒有辦法直接執行,所以需要下載工具來執行,博主有安裝Git,Git集成了LINUX指令集,所以可以透過他運行,沒有安裝的朋友也可以下載Cygwin模擬環境
#執行php ext_skel_win32.php --extname=響亮的名字
執行成功後/ext下就會有這個資料夾
我們只要修改my_test.c 和config.m4 就可以了,一個程式主體一個設定檔
進入my_test.c找到下圖中的函數
然後我們就能寫你的邏輯了
完成後我們開始編譯(注意:編譯是用VC打開的CMD,不是我們執行ext_skel_win32.php的CMD,如果已經退出了可以重新點擊VC15-x64.bat進入,當然PHP7.3可以忽略這點)
進入原始碼的根目錄執行buildconf
#執行configure --help
PHP7.2版本會有一定的小問題,我們開啟configure.js檔案
另一種解決方法
開啟擴充原始碼的config.w32,找到// Otherwise, use ARG_ENABLE 這句註解刪除,重新執行buildconf
##執行成功後將會看到我們建立的擴充 執行configure --disable-all --enable-cli --enablie-my_test=shared,如果不加入shared 將不會有.dll檔案編譯出來可以看到我們的擴充即將起飛執行nmake 開始編譯 編譯成功後來進入(博主是X64,如果編譯32位元的是X86)\x64\Release_TS 可以看到我們的擴充 ################################################ ######擴展PHP如何使用應該不用再寫下去了,不過如果擴展使用有問題的話,可以執行nmake clean,重新編譯一下在使用,如果還出現了問題那就說明你選擇編譯版本不對應你使用的PHP版本。 ###
以上是PHP7 windows增加自訂擴充和編譯PHP原始碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!