1. 程式人生 > >Ubuntu下編譯實現PHP的c擴充套件

Ubuntu下編譯實現PHP的c擴充套件

Ubuntu版本:14.04

1. 下載PHP-5.5.10.tar.bz2,並解壓。

wget http://cn2.php.net/distributions/php-5.6.0.tar.xz
wget http://cn2.php.net/distributions/php-5.5.10.tar.xz

2.  終端進入解壓後的目錄php-5.5.10,執行configure。(輸入命令./configure)

3. 依次輸入命令make/make install。成功安裝php後繼續往下執行(輸入"php -v"命令可判斷是否成功安裝了php)。

4. 進入ext目錄,輸入命令:./ext_skel --extname=myextension。(myextension為擴充套件模組的名字)。命令執行成功後,會生成一個myextension目錄。

5. 進入myextension目錄,編輯config.m4檔案。
    取消“PHP_ARG_ENABLE(hello, whether to enable hello support,”和“[  --enable-hello           Enable hello support])”這兩行的註釋。(去掉這兩行前的“dnl”即可)
    如果擴充套件函式需要呼叫到動態連線庫檔案,如:呼叫/usr/local/lib目錄下的libtest.dll。那麼在config.m4的“PHP_NEW_EXTENSION(.....)”這一行上新增以下幾行:

  1. PHP_ADD_LIBRARY_WITH_PATH(test, /usr/local/lib, MYEXTENSION_SHARED_LIBADD)  
  2. PHP_ADD_INCLUDE(/usr/local/lib)  
  3. PHP_SUBST(MYEXTENSION_SHARED_LIBADD)  
    本示例中為了方便,不新增動態連結庫。

6. 執行phpize。如果提示“phpize command not found”,說明php5-dev沒有安裝(安裝:apt-get install php5-dev)。

7. 編輯php_myextension.h檔案(紅色方框部分為所新增的內容)。
     

8. 編輯myextension.c檔案(紅色方框部分為所新增的內容)。
    
    

9. 輸入命令:./configure。(注意:是在目錄myextension下)

10. 依次輸入命令make/make install。命令執行成功後,在myextension/modules目錄下生成了myextension.so動態連線庫。

11. 拷貝myextension.so檔案到/usr/lib/php5/modules目錄下。(沒有該目錄就新建)

12. 編輯php.ini。(如果未安裝apache2,那麼該檔案在/etc/php5/cli/目錄下,如果安裝了,則還會有一個php.ini檔案在/etc/php5/apache2/目錄)如果有兩個php.ini,則儘量保證這兩個檔案一致。
      新增兩行:
          extension_dir = /usr/lib/php5/modules/
          extension = myextension.so
13. 輸入命令:php -r "echo myaddfunc(1,2);" 。如果終端打印出3則php擴充套件成功。

原始碼例子下載:

點選圖片右鍵另存為zip