1. 程式人生 > 其它 >windows10下編譯php擴充套件

windows10下編譯php擴充套件

在Windows上開發PHP擴充套件模組

雖然不怎麼用到windows下開發php擴充套件,但是有的時候有些人就是想安裝到windows下執行。沒有辦法,只能針對性的重新編譯。

這裡較全面的介紹如果在windows下編譯php擴充套件

一、開發環境搭建

1.      Windows10 64位,

下載wampserver64位,https://www.wampserver.com/en/#wampserver-64-bits-php-5-6-25-php-7

在安裝wampserver64位時,儘量把相關的SDK安裝全了。尤其是Microsoft Visual C++ 2015-2022 Redistributable(x64)。這個東西到官網下載最快,不要到其他網站,很多垃圾。不安裝這些sdk,可能wampserver64起不來哦。

因為我用的是php7.2.34版本,所以還需要下載php7.2.34版本的原始碼。https://www.php.net/distributions/php-7.2.34.tar.gz

因為php-7.2.34使用VC15 x64編譯的,VC15對應的Visual Studio 2017。所以儘量對應的版本來編譯。

還需要下載Cygwin (http://www.cygwin.com)

Cygwin是在呼叫PHP擴充套件模組生成工具ext_skel_win32.php時使用,主要模擬一些unix的命令,否則該檔案中的一些程式碼是執行不通的哦。注意:安裝時提示選取映象站點下載模組時,選擇.cn結尾的站點速度最快。

安裝完成Cygwin之後(安裝路徑記為[Cygwin Path]),需要將[PHP Source]\ext\ext_skel_win32.php檔案中的$cygwin_path設定為[Cygwin]\bin目錄路徑。
這裡有很多坑,但是一些環境必要的外掛要勾選。具體參考一下這篇文章https://blog.csdn.net/u010356768/article/details/90756742。如果有額外你需要用的,自己追加啊。

最終會在桌面生成一個Cygwin64 Terminal的快捷方式。

cygwin 安裝路徑c:\cygwin64,根據你實際安裝的來替換。

“PHP原始檔目錄/ext/ext_skel_win32.php”,在這裡就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的

cygwin路徑。$cygwin_path = 'c:\cygwin64\bin';

把$cygwin_path修改為你實際安裝cygwin的路徑,這樣在下一步生成擴充套件的時候就不太會出錯了。

二、生成擴充套件

先把php.exe追加到作業系統的環境變數裡。例如:

 

 

 再開啟cmd命令,進入[PHP Source]\ext\目錄,執行php ext_skel_win32.php --extname=foo,最終在[PHP Source]\ext\目錄下會生成一個foo目錄,擴充套件外掛樣例程式碼生成成功。

然後用VS2017在foo目錄建立一個工程,並做一些配置:具體參考:https://www.cnblogs.com/taotaodmw/p/14206707.html。該步驟要注意,我們是php7.2.34,需要把php7ts.lib配置到vs2017裡。

但是這裡需要選擇Windows SDK版本為10,如果選擇其他版本,有可能編譯的時候說找不到xxx.h檔案。

正常這樣下來,foo.dll是會在[PHP Source]\ext\foo\x64\release下生成了。

最後把這個foo.dll複製一份到

把foo.dll拷到C:\wamp64\bin\php\php7.2.34\ext目錄下,修改名稱為php_foo.dll,這樣在php.ini(注意是appache裡的php.ini連結,參考:C:\wamp64\bin\apache\apache2.4.51\bin\php.ini。不改這個重啟也無用)里加上一行extension=foo就可以了。因為配置檔案是按照這樣的格式識別的:extension='php_<ext>.dll

重啟一下apache,檢視phpinfo();,會發現我們的PHP擴充套件foo()已經載入進來,已經可以使用這個foo擴充套件了。