博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php扩展开发入门
阅读量:7153 次
发布时间:2019-06-29

本文共 1673 字,大约阅读时间需要 5 分钟。

hot3.png

一,准备环境

   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呵呵 

   打完收工!

    

  

转载于:https://my.oschina.net/xming4321/blog/101450

你可能感兴趣的文章
spring学习总结一----控制反转与依赖注入
查看>>
健康日志7-11
查看>>
模式匹配之尺度空间---scale space
查看>>
makefile编写---单个子目录编译自动变量模板ok
查看>>
MBR (主引导记录)
查看>>
win10汇编环境的搭建
查看>>
周末学习记录(摘抄为主)
查看>>
智能ERP 交接班统计异常的解决方法
查看>>
UnityWebSocket
查看>>
我的目录
查看>>
MatlabSourceCode
查看>>
MatlabTrick
查看>>
读库存扣减系列文章有感
查看>>
文本对齐方式
查看>>
月老 1215__________________________________________
查看>>
仿手机长按事件
查看>>
JXJJOI2018_三题
查看>>
关于未来房价
查看>>
Android开发, 引入jar包到 Android Private Libraries方法
查看>>
CSS3 实现的一个简单的"动态主菜单" 示例[转]
查看>>