PHP7 windows增加自定義擴充套件和編譯PHP原始碼

2020-07-16 10:06:10

①確定需要編譯的版本,檢視PHPINFO,確定PHP版本,VC版本和PHP位數。根據PHP VC版本下載對應的Visual Studio或者編譯器,圖下博主的版本是VC15 需要下載Visual Studio 2017版本

1.jpg

②準備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和編譯器,處理指令碼只會閃一下然後退出。

111.jpg

成功執行處理指令碼

2.jpg

②執行命令 phpsdk_buildtree phpdev,phpdev根據自己的喜愛可以修改(只是一個名稱)。執行完成後phpsdk_buildtree 指令碼將根據當前使用的 VC ++ 版本建立路徑,並切換到新建立的目錄

3.jpg

裡面會有一個deps資料夾,暫時先不管,把我們準備好的PHP原始碼放入deps同級目錄

5.jpg

進入解壓的 php 原始碼目錄,執行 phpsdk_deps -u 下載依賴包,網速太慢的朋友可以跳過這一步

③新增自定義PHP擴充套件

進入原始碼/ext 找到 ext_skel_win32.php,注意:PHP7.3版本沒有這個檔案,可以直接使用ext_skel

6.jpg

PHP7.3版本可以使用

7.jpg

PHP7.2就比較苦逼了,因為這個他是執行LINUX 指令碼,windows沒有辦法直接執行,所以需要下載工具來執行,博主有安裝Git,Git整合了LINUX指令集,所以可以通過他執行,沒有安裝的朋友也可以下載Cygwin模擬環境

8.jpg

執行 php ext_skel_win32.php --extname=響亮的名字

9.jpg

執行成功後/ext下就會有這個資料夾

10.jpg

11.jpg

我們只需修改 my_test.c 和 config.m4 就可以了,一個程式主體一個組態檔

進入my_test.c找到下圖中的函數

12.jpg

然後我們就能編寫你的邏輯了

13.jpg

完成後我們開始編譯(注意:編譯是用VC開啟的CMD,不是我們執行ext_skel_win32.php的CMD,如果已經退出了可以重新點選VC15-x64.bat進入,當然PHP7.3可以忽略這點)

14.jpg

進入原始碼的根目錄執行 buildconf

15.jpg

執行 configure --help

16.jpg

PHP7.2版本會有一定的小問題,我們開啟configure.js檔案

17.jpg

另一種解決方法

開啟擴充套件原始碼的 config.w32,找到 // Otherwise, use ARG_ENABLE 這句註釋刪除,重新執行 buildconf

執行成功後將會看到我們建立的擴充套件

18.jpg

執行 configure --disable-all --enable-cli --enablie-my_test=shared,如果不新增shared 將不會有.dll檔案編譯出來

19.jpg

20.jpg

可以看到我們的擴充套件即將起飛

執行 nmake 開始編譯

21.jpg

編譯成功後進入(博主是X64,如果編譯32位元的是X86)x64Release_TS

22.jpg

可以看到我們的擴充套件

23.jpg

擴充套件PHP如何使用應該不用再寫下去了,不過如果擴充套件使用有問題的話,可以執行 nmake clean,重新編譯一下在使用,如果還出現了問題 那就說明你選擇編譯版本不對應你使用的PHP版本。

以上就是PHP7 windows增加自定義擴充套件和編譯PHP原始碼的詳細內容,更多請關注TW511.COM其它相關文章!