一,准备环境
1.操作系统:fedora12
2.下载php源码: http://cn2.php.net/get/php-5.4.10.tar.bz2/from/this/mirror
3.解压获得php源码目录
4.来到php源码目录:./configure
5.make
6.make install
7.测试和php是否安装成功:php -v 看看
二。开发源码
1.来到php源码目录cd ext来到ext目录中
2.命令: ./ext_skel --extname=hello2013构建扩展开发环境,这样在ext目录下有一个hello2013目录了。
3.vim config.m4
找到这三行:
dnl PHP_ARG_ENABLE(hello2013, whether to enable hello2013 support, dnl Make sure that the comment is aligned: dnl [ --enable-hello2013 Enable hello2013 support])
删除前面的dnl,保存即可
4.vim php_hello213.h
找到:PHP_FUNCTION(confirm_hello2013_compiled); /* For testing, remove later. */ 这里其实就是定义了个confirm_hello2013_compiled的函数。
我们要在后面加上PHP_FUNCTION(hello2013);
5.vim hello2013.c
找到:const zend_function_entry hello2013_functions[] = { PHP_FE(confirm_hello2013_compiled, NULL) /* For testing, remove later. */ PHP_FE_END /* Must be the last line in hello2013_functions[] */ };
在PHP_FE(confirm_hello2013_compiled, NULL) 这行下加上PHP_FE(hello2013, NULL)
其实这就是定义函数参数的地方。
那么实现了 :
PHP_FUNCTION(confirm_hello2013_compiled) {
//中间代码省略 }
这个其实就是实现了confirm_hello2013_compiled的函数体
那么我们可以在下面加上:
PHP_FUNCTION(hello2013)
{ 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, "hello 2013: %s", arg);
RETURN_STRINGL(strg, len, 0); } 这样代码就写完了。6.在hello2013目录下: /usr/local/bin/phpize
7. ./configure
8. make
9. make install
10。这个时候会提示一个生成so的目录
拷贝这个so到/usr/lib/php/modules 下面(这个目录可能大家都不一样,大家可以通过phpinfo来找php。ini和存放ext目录,这里就是要把这个so放到这个ext目录下)
11.配置php.ini加上这个扩展这个不用多说,你懂的。
12.测试 直接php -r "echo hello2013('ddd');"看看会输出hello 2013 ddd呵呵
打完收工!