最近在公司做的事情就是php擴充套件開發,雖然我只負責c++**的編寫,但是了解擴充套件開發的流程還是很有必要的。
(本文介紹的是動態擴充套件,對靜態擴充套件有興趣的讀者可自行google)
php擴充套件開發環境搭建可參考:
假設我們需要增加乙個函式echodemo_string,對應的php**如下:
function echodemo_string($param1. 建立擴充套件框架這裡要用到乙個工具:ext_skel,它位於php原始碼目錄的ext目錄下。)
假設擴充套件的名字為echodemo。
首先進入ext目錄,
建立檔案echodemo.skel,編輯檔案內容
string echodemo_string(string param)
然後執行:
./ext_skel --extname=echodemo --proto=echodemo.skel執行完畢會生成 echodemo 目錄,目錄包含如下內容:
2. 修改配置
開啟config.m4,將第10、11、12行前面的dnl去掉,dnl表示注釋。
3. 實現功能
開啟echodemo.c,echodemo_string函式定義如下:
修改該函式實現我們需要的功能,最終實現如下:
(vim主題太醜了,我得換換。。。)
4. 編譯安裝擴充套件
這裡需要用到phpize生成configure檔案,在我的機器上,phpize位於/usr/local/php/bin目錄。
phpize當出現 "installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/",表示新的擴充套件 echodemo.so 已經安裝完成。./configure --with-php-config=/usr/local/php/bin/php-config
make
make
install
此時還需要做的一件事就是修改 php.ini 檔案。
不知道 php.ini 檔案在哪?直接 php -i | grep php.ini 。我的在 /usr/local/php/lib 目錄下。
檔案末尾追加一行:
extension=echodemo.so5. 驗證安裝重啟php-fpm:service php-fpm restart,
檢查擴充套件是否載入:
php -m | grep echodemo如果順利,終端會輸出 echodemo。
檢查擴充套件**是否正確:
php -r "注意,我外部用的雙引號,函式引數用的單引號,這是為了避免一些轉義錯誤。echo echodemo_string('hello world');
"
php擴充套件開發之hello world
最近在公司做的事情就是php擴充套件開發,雖然我只負責c 的編寫,但是了解擴充套件開發的流程還是很有必要的。本文介紹的是動態擴充套件,對靜態擴充套件有興趣的讀者可自行google php擴充套件開發環境搭建可參考 假設我們需要增加乙個函式echodemo string,對應的php 如下 funct...
php擴充套件開發
php擴充套件 pecl 跟php引擎一樣都是使用c語言開發。php核心開發組成員鳥哥laruence使用的是vim進行php開發。書籍 案例 php src ext pecl開發郵件組 盡量編寫一些phpt測試用例,php src tests下有很多參考.測試時用 enable debug編譯ph...
php擴充套件開發
二 php擴充套件開發 擴充套件開發流程 生成開發骨架 修改config.m4 編碼 編譯擴充套件為so 修改php.ini 1.生成開發骨架 1.1 進入擴充套件目錄 cd php 7.0.1 ext 1.2 用.ext skel生成骨架 ext skel extname module 1.3 修...