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(.....)”這一行上新增以下幾行:
-
PHP_ADD_LIBRARY_WITH_PATH(test, /usr/local/lib, MYEXTENSION_SHARED_LIBADD)
- PHP_ADD_INCLUDE(/usr/local/lib)
- 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