美文网首页Web
php扩展开发

php扩展开发

作者: 沐沐爱悦读 | 来源:发表于2018-07-22 12:31 被阅读53次

    1、下载php7.1。http://us1.php.net/downloads.php#v7.1.20

    2、进入源码目录的ext目录.

    3、执行./ext_skel –extname=helloword生成扩展骨架

    3、修改config.m4文件,该文件中的dnl代表注释,将以下代码前的dnl去掉:

    dnl PHP_ARG_WITH(helloworld, for helloworld support,
    dnl Make sure that the comment is aligned:
    dnl [  --with-helloworld             Include helloworld support])
    
    dnl Otherwise use enable:
    
    dnl PHP_ARG_ENABLE(helloworld, whether to enable helloworld support,
    dnl Make sure that the comment is aligned:
    dnl [  --enable-helloworld           Enable helloworld support])
    

    4、在helloworld.c中找到如下代码:

    PHP_FUNCTION(confirm_helloworld_compiled)
    {
        char *arg = NULL;
        size_t arg_len, len;
        zend_string *strg;
    
        if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &arg, &arg_len) == FAILURE) {
            return;
        }
    
        strg = strpprintf(0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "helloworld", arg);
    
        RETURN_STR(strg);
    }
    

    在改代码后面加一个

    PHP_FUNCTION(helloWorld);
    

    5、找到如下代码:

    const zend_function_entry helloworld_functions[] = {
        PHP_FE(confirm_helloworld_compiled, NULL)       /* For testing, remove later. */
        PHP_FE(helloWorld,  NULL)  //添加这一行注册自定义函数
        PHP_FE_END  /* Must be the last line in helloworld_functions[] */
    };
    

    6、在helloworld.c文件末尾添加helloworld函数的代码实现:

    PHP_FUNCTION(helloWorld)
    {
        php_printf("Hello World!\n");
        RETURN_TRUE;
    }
    

    7、回到源码目录编译安装:

    phpize
    ./configure(如果想指定php文件配置的话:./configure --with-php-config=/usr/bin/php-config7.1 ,不同的Linux版本位置可能不同)
    make
    sudo make install
    

    附两篇参考文档:
    https://blog.csdn.net/u011957758/article/details/72456298

    https://www.cnblogs.com/boystar/p/6904795.html

    比较详细的扩展开发
    面向对象方式

    相关文章

      网友评论

        本文标题:php扩展开发

        本文链接:https://www.haomeiwen.com/subject/gwylmftx.html