或者在學習中有什麼問題歡迎交流
2.進入原始碼目錄中的ext目錄中
3.執行./ext_skel --extname=myext(這是擴充套件的名字) 生成擴充套件框架 [ps:如果ext_skel無法執行,請檢視ext_skel檔案是否有可執行許可權]
4.編寫擴充套件函式
a).我們開啟myext.c檔案,裡面有一些函式,包括
php_function(),這是編寫擴充套件中函式邏輯的註冊函式,每乙個擴充套件函式對應乙個php_function(擴充套件函式名){}
下面四個函式是擴充套件的c檔案中基本都有的,這些在php的整個生命週期中需要呼叫的,具體的請看:
php_minit_function(),這個函式在該擴充套件被載入時呼叫
php_rinit_function(),php初始化執行指令碼的基本環境,在檔案請求到達後,檔案編譯前執行該函式,例如記錄請求開始時間,結合請求結束時間,可以記錄下處理請求所花費的時間
php_rshutdown_function(),一般指令碼執行結束(執行到末尾或者exit,die退出後)後呼叫該函式
php_mshutdown_function(),sapi生命週期結束後,一般登出一些持久化的資源
b).我們來編寫乙個自己的函式
在myext.c檔案中新增
php_function(myfunction)
然後在myext.c檔案中的zend_function_entry myext_functions裡面新增php_fe(myfunction,null) 注意後面不帶逗號或者分號,需要換行
將config.m4中下面**前的dnl去掉
dnl php_arg_with(myext, for myext support,
dnl [ --with-myext include myext support])
在擴充套件目錄下執行phpize命令生成擴充套件的配置工具
然後執行./configure -with-php-config=/usr/bin/php-config && make && make install 編譯和安裝,成功後在php擴充套件目錄中可以看到編譯好的myext.so檔案
然後在php.ini檔案中新增extension=myext.so
重啟一下服務,測試myfunction(4,5)的結果是否輸出20
Linux下編寫php擴充套件
linux下編寫php擴充套件 1 所需 phpize 如果一開始是使用原始碼編譯裡面就有 php原始碼 2 到原始碼目錄下ext目錄裡面,執行.ext skel extname myext 3 生成擴充套件框架後,需要進入裡面修改m4檔案,php arg enable myext,whether ...
在Linux下編譯php擴充套件
在windows下我們需要開啟某個擴充套件,很容易。一般情況下,dll檔案都已經安靜地躺在extension目錄下,只等待你在php.ini裡將它前面的 去掉。而在linux,你cd到php的extensions目錄往往發現裡面空空的。或許只有幾個so檔案落寞地待著。你需要到php原始碼包裡尋找,希...
Linux 下編寫乙個 PHP 擴充套件
假設需求 開發乙個叫做 helloword 的擴充套件。擴充套件裡有乙個函式,helloword echo helloword tom 返回 hello world tom 本地環境php版本 5.6.9 系統 linux centos release 6.5 final 最終效果 實現流程 第一步...