為了提高逼格,我決定自己實現php的擴充套件
一、步驟過程
1、編寫預定義檔案
#vim /root/mark_function_module.def
內容為int a(int x,int y)
2、生成擴充套件目錄(mark_function_module為模組名)
#cd /usr/local/php/ext
#./ext_skel --extname=mark_function_module --proto=/root/mark_function_module.def
3、修改config.m4
#vim /usr/local/php/ext/mark_function_module/config.m4
去掉dnl的注釋
php_arg_enable(mark_function_module, whether to enable mark_function_module support,
make sure that the comment is aligned:
[ --enable-mark_function_module enable mark_function_module support])
4、修改 mark_function_module.c
#vim /usr/local/php/ext/mark_function_module/mark_function_module.c
定位/php_function(a)
修改如下:
php_function(a)
5、生成擴充套件庫
#cd /usr/local/php/ext/mark_function_module
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install
6、複製生成的動態庫到/usr/local/php/modules目錄
生成的動態庫會在
# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
複製cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/mark_function_module.so /usr/local/php/modules/mark_function_module.so
7、修改php.ini
修改extension_dir = "/usr/local/php/modules"
新增extension=mark_function_module.so
8、重啟apache
# /usr/local/apache/bin/apachectl restart
9、檢查是否載入
# /usr/local/php/bin/php -m
10、編寫程式測試
# vim /usr/local/apache/htdocs/test_ext.php
內容如下
echo a(1,2);
如果輸出為3,表示可以呼叫了~說好的逼格
二、可能遇到的問題
1、步驟過程第五步的時候
執行/usr/local/php/bin/phpize可能會報錯
cannot find autoconf. please check your autoconf installation and the $php_autoconf environment variable. then, rerun this script
解決方案
# wget
# tar -zvxf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure && make && make install
# wget
# tar -zvxf autoconf-2.62.tar.gz
# cd autoconf-2.62/
# ./configure && make && make install
然後再在mark_function_module的目錄下,執行/usr/local/php/bin/phpize
C 編寫PHP擴充套件
進入php5 ext目錄,用ext skel extname modulename生成乙個模板。進入php5 ext modulename 開啟config.m4,改寫成 php arg enable picen,whether to enable picen support,enable pice...
c 寫php擴充套件,如何用C語言編寫PHP擴充套件的詳解
1 預定義 在home目錄,也可以其他任意目錄,寫乙個檔案,例如caleng module.def 內容是你希望定義的函式名以及引數 int a int x,int y string b string str,int n 2 到php原始碼目錄的ext目錄 cd usr local php 5.4....
編寫PHP擴充套件補遺
關於config.m4的用法 幾個函式的介紹,php add library x,modulename shared libadd php add include path x是需要附加編譯的條件,即 l x,path是標頭檔案之類的路徑。如果有多個檔案需要編譯,可以這樣修改php new exte...