開發一個小的php擴充

來源:互聯網
上載者:User

標籤:測試   .so   原始碼   module   char   ext   fpm   ini   rgs   

今天試了一下在php添加擴充,看了挺多資料,細節上不一致,其他大體是差不多的。

我們來開發一個叫ccvita_string的函數,他的主要作用是返回一段字元,對應的php代碼可能如此:

function ccvita_string($str){     $result = ‘<a href="‘.$str.‘">Link</a>‘;     return $result;}
即產生連結

第一步,產生代碼

 進入php原始碼中內建的工具ext_skel,利用其建立檔案。

首先我們建立一個檔案ccvita.skel,它的內容為

string ccvita_string(string str)

就是告訴ext_skel這個東西,我們要做的擴充裡面有個函數叫ccvita_string。然後執行

cd sofe/hongxin/src/php-5.3.27/ext/./ext_skel --extname=ccvita --proto=ccvita.skelcd ccvita/

這時候,ccvita這個擴充的代碼架構就已經出來了。

第二步,修改配置

vim config.m4

將10、11、12三行最前面的dnl刪除掉,就是將

dnl PHP_ARG_WITH(ccvita, for ccvita support,dnl Make sure that the comment is aligned:dnl [  --with-ccvita             Include ccvita support])

修改為

PHP_ARG_WITH(ccvita, for ccvita support,Make sure that the comment is aligned:[  --with-ccvita             Include ccvita support])

第三步,實現功能

vim ccvita.c

找到將ccvita_string這個函數修改為

PHP_FUNCTION(ccvita_string){    char *str = NULL;    int argc = ZEND_NUM_ARGS();    int str_len;    char *result;    if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE)        return;    str_len = spprintf(&result, 0, "<a href=\"%.78s\">Link</a>", str);    RETURN_STRINGL(result, str_len, 0);}

第四步,編譯擴充
儲存後,開始編譯

/usr/local/php/bin/phpize    //務必是當前啟動並執行phpize,避免將其他版本php執行./configure --with-php-config=/usr/local/php/bin/php-config  //這裡需要帶上當前啟動並執行php-config路徑make && make install

第五步,添加擴充

這時候,一切順利的話,該擴充已經在modules/ccvita.so這個位置了。下面就是將這個擴充加入到PHP中去,讓我們PHP程式可以調用到。

cp modules/ccvita.so /usr/local/php/ext/vim /usr/local/php/etc/php.iniextension=/usr/local/php/ext/ccvita.so #在php.ini檔案最後增加這一行service php-fpm restart #重啟PHP服務cp ccvita.php /data/www/wwwroot/default/  

接下來就可以訪問ccvita.php這個檔案,測試擴充了

直接使用

ccvita_string($str)

即可

 

開發一個小的php擴充

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.