首頁 後端開發 PHP7 PHP7 windows增加自訂擴充和編譯PHP原始碼

PHP7 windows增加自訂擴充和編譯PHP原始碼

Nov 01, 2019 am 11:57 AM
php7

PHP7 windows增加自訂擴充和編譯PHP原始碼

PHP7 windows增加自訂擴充功能和編譯PHP原始碼

需要用到的材質

推薦教學:php7教學

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

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

11PHP7 windows增加自訂擴充和編譯PHP原始碼

成功運行處理腳本

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

③添加自定義PHP擴展

進入源代碼/ext 找到ext_skel_win32.php,注意:PHP7.3版本沒有這個文件,可以直接使用ext_skel

PHP7 windows增加自訂擴充和編譯PHP原始碼

PHP7.3版本可以用

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

PHP7 windows增加自訂擴充和編譯PHP原始碼

1PHP7 windows增加自訂擴充和編譯PHP原始碼

我們只要修改my_test.c 和config.m4 就可以了,一個程式主體一個設定檔

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

1PHP7 windows增加自訂擴充和編譯PHP原始碼

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

1PHP7 windows增加自訂擴充和編譯PHP原始碼

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

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

1PHP7 windows增加自訂擴充和編譯PHP原始碼

#執行configure --help

1PHP7 windows增加自訂擴充和編譯PHP原始碼

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

1PHP7 windows增加自訂擴充和編譯PHP原始碼

另一種解決方法

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

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

1PHP7 windows增加自訂擴充和編譯PHP原始碼

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

1PHP7 windows增加自訂擴充和編譯PHP原始碼

PHP7 windows增加自訂擴充和編譯PHP原始碼

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

執行nmake 開始編譯

2PHP7 windows增加自訂擴充和編譯PHP原始碼

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

2PHP7 windows增加自訂擴充和編譯PHP原始碼

可以看到我們的擴充

2PHP7 windows增加自訂擴充和編譯PHP原始碼

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

以上是PHP7 windows增加自訂擴充和編譯PHP原始碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php7.0安裝了插件還是顯示未安裝怎麼辦 php7.0安裝了插件還是顯示未安裝怎麼辦 Apr 02, 2024 pm 07:39 PM

解決 PHP 7.0 中插件未顯示已安裝問題的方法:檢查插件配置並啟用插件。重新啟動 PHP 以套用配置變更。檢查插件檔案權限,確保其正確。安裝遺失的依賴項,以確保插件正常運作。如果其他步驟都失敗,則重建 PHP。其他可能原因包括外掛程式版本不相容、載入錯誤版本或 PHP 配置問題。

php7.0怎麼安裝mongo擴展 php7.0怎麼安裝mongo擴展 Nov 21, 2022 am 10:25 AM

php7.0安裝mongo擴充的方法:1、建立mongodb使用者群組和使用者;2、下載mongodb原始碼包,並將原始碼包放到“/usr/local/src/”目錄下;3、進入“src/”目錄;4、解壓縮原始碼包;5、建立mongodb檔案目錄;6、將檔案複製到「mongodb/」目錄;7、建立mongodb設定檔並修改設定即可。

php7檢測tcp埠不好用怎麼解決 php7檢測tcp埠不好用怎麼解決 Mar 22, 2023 am 09:30 AM

在php5中,我們可以使用fsockopen()函數來偵測TCP埠。這個函數可以用來開啟一個網路連接和進行一些網路通訊。但是在php7中,fsockopen()函數可能會遇到一些問題,例如無法開啟連接埠、無法連接到伺服器等。為了解決這個問題,我們可以使用socket_create()函數和socket_connect()函數來偵測TCP埠。

PHP 伺服器環境常見問題指南:快速解決常見難題 PHP 伺服器環境常見問題指南:快速解決常見難題 Apr 09, 2024 pm 01:33 PM

PHP伺服器環境常見的解決方法包括:確保已安裝正確的PHP版本和已複製相關檔案到模組目錄。暫時或永久停用SELinux。檢查並配置PHP.ini,確保已新增必要的擴充功能和進行正確設定。啟動或重新啟動PHP-FPM服務。檢查DNS設定是否有解析問題。

php7.0怎麼安裝部署 php7.0怎麼安裝部署 Nov 30, 2022 am 09:56 AM

php7.0安裝部署的方法:1、到PHP官網下載與本機系統對應的安裝版本;2、將下載的zip檔案解壓縮到指定目錄;3、開啟命令列窗口,在「E:\php7」目錄下運行“php -v”命令即可。

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

在Docker環境中使用PECL安裝擴展時為什麼會報錯?如何解決? 在Docker環境中使用PECL安裝擴展時為什麼會報錯?如何解決? Apr 01, 2025 pm 03:06 PM

在Docker環境中使用PECL安裝擴展時報錯的原因及解決方法在使用Docker環境時,我們常常會遇到一些令人頭疼的問�...

記錄一次用strace診斷php佔用系統資源過高的問題 記錄一次用strace診斷php佔用系統資源過高的問題 May 03, 2024 pm 04:31 PM

本機環境:redhat6.7系統。 nginx1.12.1,php7.1.0,程式碼使用yii2框架問題:本地的web站需要用到elasticsearch服務。當php使用本機伺服器搭建的elasticsearch時,本地的負載都是正常。當我使用aws的elasticsearchservice服務時,本地伺服器出現負載經常過高的情況。查看nginx和php日誌,發現沒有異常。系統的並發連線數也不高。這時候想到我們老闆跟我講的一個strace診斷工具。偵錯過程:找一個php的子程序idstrace-

See all articles