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擴展了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM