杨宗德:C语言对php扩展


 杨宗德: C语言对 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.
完成!
杨宗德:C语言对php扩展,想了解更多的c语言教程,点击e良师益友网观看。