Linux 下編寫一個 PHP 擴展


    假設需求

開發一個叫做 helloWord 的擴展。

擴展里有一個函數,helloWord()。

 

  echo helloWord('Tom');
    //返回:Hello World: Tom

 


    本地環境

PHP版本:5.6.9

系統:Linux CentOS release 6.5 (Final)

    最終效果



    實現流程

第一步:

    進入到本地的php目錄執行:
     

    cd /root/soft/src/php-5.6.9
    cd ext
    ./ext_skel --extname=helloWord
    cd helloWord
    vi config.m4
     
    搜索:dnl Otherwise use enable 將下面修改成:
     
    PHP_ARG_ENABLE(helloWorld, whether to enable helloWorld support,
    [  --enable-helloWorld           Enable helloWorld support])
     
    if test "$PHP_HELLOWORLD" != "no"; then
     
    ...

 


如圖:




第二步:

 

  vi php_helloWorld.h
     
    搜索:extern zend_module_entry 新增一行:
     
    PHP_FUNCTION(helloWorld);

 


如圖:



第三步:

 

   vi helloWorld.c
     
    搜索:const zend_function_entry helloWorld_functions[] 新增一行:
     
    PHP_FE(helloWorld, NULL)

 



如圖:



 

   在 helloWorld.c 底部新增一個方法
     
    PHP_FUNCTION(helloWorld)
    {
        char *arg = NULL;
        int arg_len, len;
        char *strg;
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
            return;
        }
        len = spprintf(&strg, 0, "Hello World: %s", arg);
        RETURN_STRINGL(strg, len, 0);
    }

 


如圖:



第四步:

 

  //編譯安裝
    cd /root/soft/src/php-5.6.9/ext
    /usr/local/php/bin/phpize #用phpize生成configure配置文件
    ./configure --with-php-config=/usr/local/php/bin/php-config   #配置
    make  #編譯
    make install  #安裝

 



第五步:

 

   //修改php.ini
    extension="helloWorld.so"   #名稱為安裝擴展的名稱

 


第六步:

重啟環境。

完成上面的步驟,簡單的 helloWorld 擴展就OK了。

大家可以根據自己的需求,開發滿足自己的擴展。

比如,可以開發一些擴展類,擴展方法,等等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM