PHP5自定义Module开发
推荐 原创
©著作权归作者所有:来自51CTO博客作者wmkm0113的原创作品,请联系作者获取转载授权,否则将追究法律责任
PHP5自定义Module开发https://blog.51cto.com/commandos/130700
一、环境准备
将生成的libTest.so文件拷贝到/usr/lib目录下,并执行命令/sbin/ldconfig
准备PHP的源代码文件,解压缩。
二、开发PHP Module
首先进入PHP源代码目录中的ext目录,执行如下命令:
# ./ext_skel --extname=自定义模块名
执行完成后,会生成以“自定义模块名”命名的文件夹,进入这个文件夹后编辑config.m4文件
找到如下代码:
dnl PHP_ARG_WITH(Test, for Test support,
dnl Make sure that the comment is aligned:
dnl [ --with-Test Include Test support])
或者
dnl PHP_ARG_ENABLE(Test, whether to enable Test support,
dnl Make sure that the comment is aligned:
dnl [ --enable-Test Enable Test support])
去掉每行前面的dnl
如果是想通过动态引用,建议使用--enable-Test
三、编写调用函数
编辑Test.c文件,找到如下代码:
zend_function_entry Test_functions[] = {
PHP_FE(confirm_Test_compiled, NULL) /* For testing, remove later. */
PHP_FE(test, NULL) /* 增加这一行,其中test代表在PHP文件中的函数调用名 */
{NULL, NULL, NULL} /* Must be the last line in Test_functions[] */
};
在Test.c文件的最后,增加代码:
PHP_FUNCTION(test)
{
RETURN_STRING(testPhpModule());
}
进行编译:
$ ./configure –with-php-config=${PHP_HOME}/bin/php-config
$ make LDFLAGS=-lTest
$ make test
四、测试Module
将编译完成后的模块so文件拷贝到Apache目录下:
# cp modules/Test.so /usr/local/apache2/htdocs/
在/usr/local/apache2/htdocs/目录下编辑PHP文件
# vi test.php
文件中的代码如下:
<?php
dl(“Test.so”);
echo test();
?>
启动Apache,访问test.php,成功的话页面上会显示和main()函数同样的输出结果。
未知 2009-02-16
wmkm0113 博主 回复了 未知 2009-02-16