編寫PHP的C擴充套件

2021-06-27 10:04:04 字數 2163 閱讀 8850

為了提高逼格,我決定自己實現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...