说来惭愧,接触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
3PHP_ARG_WITH(ccvita, for ccvita support,
Make sure that the comment is aligned:
[ --with-ccvita Include ccvita support])
第四步,写逻辑,打开toryzen.c文件
找到toryzen函数,修改为:
1 | PHP_FUNCTION(toryzen) |
第五步,编译
1 | phpize |
在modules目录下就有我们要的.so文件
第六步:然后加入php.ini中,在文件底部加入:1
extension=/home/dev/php-5.3.28/ext/toryzen/modules/toryzen.so
重启apache,OK完工。
随便写一个test.php 执行 toryzen();试试…