①確定需要編譯的版本,檢視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)x64Release_TS
可以看到我們的擴充套件
擴充套件PHP如何使用應該不用再寫下去了,不過如果擴充套件使用有問題的話,可以執行 nmake clean,重新編譯一下在使用,如果還出現了問題 那就說明你選擇編譯版本不對應你使用的PHP版本。
以上就是PHP7 windows增加自定義擴充套件和編譯PHP原始碼的詳細內容,更多請關注TW511.COM其它相關文章!