用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要生效需要重启。