开发PHP的扩展实例
由 admin 发表于 14:02步骤一:生成扩展框架
cd /root/soft/php/php-5.2.1/ext
./ext_skel –extname=huanglin
cd /root/soft/php/php-5.2.6/ext/huanglin
vi config.m4
打开文件后去掉 dnl ,获得下面的信息:
PHP_ARG_ENABLE(huanglin, whether to enable huanglin support,
[ --enable-huanglin Enable huanglin support])
保存退出
第二步:编写代码
vi php_huanglin.h
找到:PHP_FUNCTION(confirm_huanglin_compiled); ,新增一行:
PHP_FUNCTION(huanglin_test);
保存退出
vi huanglin.h
数组里增加我们的函数,找到 zend_function_entry huanglin_functions[],增加:
PHP_FE(huanglin_test, NULL)
保存退出
再到 huanglin.c 文件最后面增加如下代码:
PHP_FUNCTION(huanglin_test)
{
char *arg = NULL;
int arg_len, len;
char *strg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, “s”, &arg, &arg_len) == FAILURE) {
return;
}
len = spprintf(&strg, 0, “Your input string: %s\n”, arg);
RETURN_STRINGL(strg, len, 0);
}
保存退出。
第三步:编译安装
cd /root/soft/php/php-5.2.6/ext/huanglin
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
make test
make install
现在看看是不是有个 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/huanglin.so
编辑php.ini,把扩展加入进去:
vi /usr/local/php/lib/php.ini
在[PHP]模块下增加:
extension = huanglin.so
保存退出。
第四步:检查安装结果
现在看看模块加载了没有:
/usr/local/php/bin/php -m,应该会打印出:
[PHP Modules]
…
huanglin
…
[Zend Modules]
然后重启apache,输出 phpinfo() ,应该能够看到:
huanglin
huanglin support enabled
看看函数是否存在并且调用,在web目录下建立:huanglin.php
<?php
echo “<pre>”;
print_r(get_loaded_extensions());
print_r(get_extension_funcs(‘huanglin’));
echo huanglin_test(‘My first php extension’);
echo “</pre>”;
?>
访问apache,应该能够看到:
Array
(
…
[33] => huanglin
)
Array
(
[0] => confirm_huanglin_compiled
[1] => huanglin_test
)
Your input string: My first php extension