php擴展開發之hello world CentOS安裝配置nginx和php Linux 下PHP擴展開發系列:二. 一個典型的擴展開發

最近在公司作的事情就是php擴展開發,雖然我只負責c++代碼的編寫,可是瞭解擴展開發的流程仍是頗有必要的。php

(本文介紹的是動態擴展,對靜態擴展有興趣的讀者可自行google)html

php擴展開發環境搭建可參考:nginx

CentOS安裝配置nginx和php

假設咱們須要增長一個函數echodemo_string,對應的php代碼以下:c++

function echodemo_string($param) {
    $result = "your input is $param";
    return $result;
}

1. 建立擴展框架vim

這裏要用到一個工具:ext_skel,它位於php源碼目錄的ext目錄下。框架

假設擴展的名字爲echodemo。函數

首先進入ext目錄,php-fpm

建立文件echodemo.skel,編輯文件內容工具

string echodemo_string(string param)

而後執行:post

./ext_skel --extname=echodemo --proto=echodemo.skel

執行完畢會生成 echodemo 目錄,目錄包含以下內容:

2. 修改配置

打開config.m4,將第十、十一、12行前面的dnl去掉,dnl表示註釋。

3. 實現功能

打開echodemo.c,echodemo_string函數定義以下:

修改該函數實現咱們須要的功能,最終實現以下:

(vim主題太醜了,我得換換。。。)

4. 編譯安裝擴展

這裏須要用到phpize生成configure文件,在個人機器上,phpize位於/usr/local/php/bin目錄。

phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

當出現 "Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/",表示新的擴展 echodemo.so 已經安裝完成。

此時還須要作的一件事就是修改 php.ini 文件。

不知道 php.ini 文件在哪?直接 php -i | grep php.ini 。個人在 /usr/local/php/lib 目錄下。

文件末尾追加一行:

extension=echodemo.so

5. 驗證安裝

重啓php-fpm:service php-fpm restart,

檢查擴展是否加載:

php -m | grep echodemo

若是順利,終端會輸出 echodemo。

檢查擴展代碼是否正確:

php -r "echo echodemo_string('hello world');"

注意,我外部用的雙引號,函數參數用的單引號,這是爲了不一些轉義錯誤。

參考資料:

PHP擴展開發:第一個擴展

Linux 下PHP擴展開發系列:二. 一個典型的擴展開發

 

最後配張圖:

相關文章
相關標籤/搜索