用C语言,php的扩展的书写格式(ZEND API)写PHP扩展的步骤:
我用的php环境 php 5.2.5,完成最基本功能 helloword

cd /php5.2.5/ext

生成骨架 ./ext_skel --extname=cltest 会在当前目录建立一个cltest的目录

进入该目录 cd cltest

修改 配置文件config.m4
vi cltest/config.m4 

注释3个dnl [dnl代表注释,对应shell的#]
PHP_ARG_WITH(my_module, for my_module support,
Make sure that the comment is aligned:
[ --with-my_module Include my_module support])

修改完毕。

vi cltest.c
改成这样:
function_entry my_module_functions[] = {
PHP_FE(say_hello, NULL) /* ?添加这一行代码   注册函数say_hello() */
PHP_FE(confirm_my_module_compiled, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in my_module_functions[] */
};

另外在文件的最后添加下列代码 函数程序主体
PHP_FUNCTION(say_hello)
{
        RETURN_STRINGL("hello world",100,1);
}

修改完毕。

 

vi php_cltest.h

在文件中PHP_FUNCTION(confirm_my_module_compiled);一行前面添加下面的代码 函数定义
PHP_FUNCTION(say_hello);

修改完毕。

 

找到这个执行文件phpize ,在cltest目录下执行命令,用于加载动态链接库

/usr/local/php/bin/phpize
./configure --enable-cltest --with-apxs2=/usr/local/apache2/bin/apxs --with-php-config=/usr/local/php/bin/php-config

make
会在当前的目录下生成一个目录叫modules他的下面就放着你要的cltest.so文件

make install
会cp modules/cltest.so /usr/local/php/include/php/ext/
其余的就是修改 php.ini加载该.so webserver要生效需要重启。