用C语言写PHP扩展 linux
1:預(yù)定義
在home目錄,也可以其他任意目錄,寫一個(gè)文件,例如caleng_module.def
內(nèi)容是你希望定義的函數(shù)名以及參數(shù):
int a(int x,int y)
string b(string str,int n)
?
2:到php源碼目錄的ext目錄
#cd /usr/local/php-5.4.0/ext/
?
執(zhí)行命令,生成對(duì)應(yīng)擴(kuò)展目錄
#./ext_skel --extname=caleng_module --proto=/home/hm/caleng_module.def
?
3:修改config.m4
去掉dnl的注釋
PHP_ARG_ENABLE(caleng_module, whether to enable caleng_module support,
Make sure that the comment is aligned:
[? --enable-caleng_module?????????? Enable caleng_module support])
4:修改caleng_module.c
| /* {{{ proto int a(int x, int y) ????*/ PHP_FUNCTION(a) { ????int argc = ZEND_NUM_ARGS(); ????int x; ????int y; ????int z; ????if?(zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE) ????????? ????????return; z=x+y; ????????RETURN_LONG(z); } /* }}} */ /* {{{ proto string b(string str, int n) ????*/ PHP_FUNCTION(b) { ????char *str = NULL; ????int argc = ZEND_NUM_ARGS(); ????int str_len; ????long n; ????char *result; ????char *ptr; ????int result_length; ?? ????if?(zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) ????????return; ????result_length = str_len * n; ????result = (char *) emalloc(result_length + 1); ????ptr = result; ????while?(n--) { ????????memcpy(ptr, str, str_len); ????????ptr += str_len; ????} ????*ptr = '\0'; ????RETURN_STRINGL(result, result_length, 0); } /* }}} */ |
?5:生成擴(kuò)展庫
#cd ./caleng_module
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install
?
6:到php的對(duì)應(yīng)extensions目錄
如上圖所示
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
改目錄下有生成的caleng_module.so文件
?
7:修改php.ini
php.ini如果找不到可以從phpinfo()打出的信息看到
#cd /usr/local/php/lib/
php.ini增加擴(kuò)展信息
extension=caleng_module.so
?
8:重啟Apache
# /usr/local/apache2/bin/apachectl restart
?
9:檢查加載
?/usr/local/php/bin/php -m
?
10:PHP調(diào)用
echo a(1,2);
?
輸出 3? 就說明成功了!
?
http://www.cnblogs.com/zfying/archive/2012/07/31/2616402.html
轉(zhuǎn)載于:https://www.cnblogs.com/andhm/archive/2012/08/10/2631923.html
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的用C语言写PHP扩展 linux的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GNU make manual 翻译(三
- 下一篇: Service Unavailable解