linux平台下php扩展的开发

php扩展顾名思义,是用于增强php的功能,可以把现实功能的php代码放到php的底层用C语言实现,以后待博主自己调试完成将webdav编译到php的扩展成为一个.so文件的时候再发文章详细的说明。php扩展不必要自己完全的写代码,其实php官方本身就自带了一个小工具,叫做ext_skel。

具体实现的方法

切目录到你的php的源码的目录,找到ext,切到ext下,你就会发现ext_skel这个文件,下面你就需要新建一个文件,随便举个例子lazypeople.skel (linux command $ touch lazypeople.skel),然后对文件进行编辑,文件的内容写为:string lazypeople(string str),然后使用命令自动生成扩展的那么的文件,只需要./ext_skel –extname=lazypeople –proto=lazypeople.skel 这个命令也很好懂。

这时你就会发现自动生成了很多的函数

下面继续的工作就是编辑生成的文件以满足我们的功能

1.step1

编辑config.m4,去掉10 11 12行的注释,dnl定义的即是注释。

2.step2

编辑ccvita.c ,找到对应的代码修改为:

PHP_FUNCTION(lazypeople)
{
    char *str = NULL;
    int argc = ZEND_NUM_ARGS();
    int str_len;
    char *result;

    if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE)
        return;

    str_len = spprintf(&result, 0, "<a href=\"%.78s\">Link</a>", str);
    RETURN_STRINGL(result, str_len, 0);
}

3.step3 开始编译

$/usr/local/php/bin/phpize  ./configure --with-php-config=/usr/local/php/bin/php-config
#(如果你的php安装路径不是这个请对应修改!)
$make
$make test
$make install

4.step4

到这里扩展的so文件已经在 modules文件夹下了,而且已经安装到你的php的扩展文件下面,现在只需要修稿你的php.ini设置了,在扩展文件那加上一句extension=/usr/local/php/ext/lazypeople.so ,然后重启你的php即可。

此时你就可以在全局的php脚本中使用lazypeople($str)函数了,不需要require任何的定义文件。是不是很神奇,就相当于给php新增可不少的内置函数以满足你的要求。