PHP扩展开发基础

说来惭愧,接触PHP这么久了,就从来没有写过扩展,这也与实际生产环境有关,至今为止就没有用到要写扩展的示例,但是,不用咱们也不能不会是吧,这就来稍微实践一下,随便在一台LAMP的服务器上进行尝试一下,这次是个入门,至少知道如何操作,例子是个无参的函数,过几天写一个自定义简易的加密函数,再深入研究一下~

这里环境是PHP5.3.3的环境,因为要用到ext_skel,服务器上没有留源文件,在官网下载了PHP5.3.28的源文件,来小介绍一下整个过程。

第一步,进入/home/dev/php-5.3.28/ext,创建文件toryzen.skel 写入:

string toryzen()

第二步,执行

1
./ext_skel --extname=toryzen --proto=toryzen.skel

这样,在ext下就会生成相应的目录,里面就是扩展代码的框架了

第三步,打开目录下的config.m4 将10、11、12三行最前面的dnl删除掉
修改后为:

1
2
3
PHP_ARG_WITH(ccvita, for ccvita support,
Make sure that the comment is aligned:
[ --with-ccvita Include ccvita support])

第四步,写逻辑,打开toryzen.c文件

找到toryzen函数,修改为:

1
2
3
4
5
6
7
PHP_FUNCTION(toryzen)
{
if (zend_parse_parameters_none() == FAILURE) {
return;
}
php_printf("Hello Toryzen !")
}

第五步,编译

1
2
3
phpize
./configure --with-php-config=/usr/bin/php-config
make

在modules目录下就有我们要的.so文件

第六步:然后加入php.ini中,在文件底部加入:

1
extension=/home/dev/php-5.3.28/ext/toryzen/modules/toryzen.so

重启apache,OK完工。

随便写一个test.php 执行 toryzen();试试…