程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> linux下 C語言對 php 擴展

linux下 C語言對 php 擴展

編輯:PHP綜合
一,搭建php環境
下載php 5.2.6 源碼 並解壓
編譯安裝,搭建php環境

二,創建擴展項目

進入源碼目錄
cd php5.2.6/ext/
./ext_skel --extname=my_ext
創建名字為my_ext的項目,最終會生成my_ext.so

三,更改配置和程序
$ vi ext/my_ext/config.m4

根據你自己的選擇將

dnl PHP_ARG_WITH(my_ext, for my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --with-my_ext             Include my_ext support])
修改成

PHP_ARG_WITH(my_ext, for my_ext support,
Make sure that the comment is aligned:

[  --with-my_ext             Include my_ext support])
或者將

dnl PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --enable-my_ext           Enable my_ext support])
修改成

PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,

Make sure that the comment is aligned:
[  --enable-my_ext           Enable my_ext support])

$ vi ext/my_ext/php_my_ext.h


PHP_FUNCTION(confirm_my_ext_compiled);       /* For testing, remove later. */
更改為
PHP_FUNCTION(say_hello);    


$ vi ext/my_ext/my_ext.c


zend_function_entry php5cpp_functions[] = {
        PHP_FE(confirm_my_ext_compiled,      NULL) /* For testing, remove later. */
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};
更改為
zend_function_entry php5cpp_functions[] = {
        PHP_FE(say_hello,       NULL)         
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};

在最後添加:
PHP_FUNCTION(say_hello)
{
        zend_printf("hello world\n");
}

四,編譯
$ cd my_ext
$ /usr/local/php/bin/phpize
ps: 如果出現:Cannot find autoconf.……的錯誤信息,則需要安裝 autoconf (安裝過程略)
$ ./configure  --with-php-config=/usr/local/php/bin/php-config
$ make

這時會編譯出 my_ext/modules/my_ext.so

五,配置php.ini
將my_ext.so放入/usr/local/php/ext/目錄

$ vi php.ini

修改添加如下:
extension_dir = '/usr/local/php/ext/'
extension=my_ext.so  

六,測試
$ vi test.php
<?php
   say_hello();
?>

$ /usr/local/php/bin/php test.php
hello world.

則大功告成

ps:如有問題請留言,大家共同探討
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved