• php开发扩展环境的搭建(Windows)


    php开发扩展环境的搭建(Windows)

    前期准备:

    (1) 下载php-5.3.10源码包(php-5.3.10.tar.bz2)并解压到C:php-5.3.10;下载二进制包php-5.3.10-Win32-VC9-x86.zip,也解压到C:php-5.3.10,重复的文件全部覆盖。
    (2) 下载php-sdk-binary-tools-20110915.zip,并解压到C盘下,并将解压后的bin目录添加到系统变量。
    (3) 命令行就如C:php-5.3.10,输入buildconf.bat。 //生成configure.js 
    (4)
    输入cscript /nologo configure.js --with-php-build="../win32build" --without-libxml  --disable-odbc //生成config.win32.h
    (5)修改config.win32.h(与编译php源码的编译版本相同)

    一  使用自动构建工具搭建php扩展(php源码目录下运行)

    Php   ext_skel_win32.php –extname=hello

    注:myext扩展名

    生成如下:

    二  添加依赖的php5ts.lib 
    将php二进制包中的dev目录下的php5ts.lib拷贝到你的扩展目录中

    三  编写自己的函数

    (1)修改php_hello.h文件 
    扩展新的函数:在PHP_FUNCTION(confirm_myhello_compiled);行后添加一行 PHP_FUNCTION(exttest);  //exttest为函数名
    (2)修改hello.c 文件 
    在数组zend_function_entry myhello_functions[]增加一行

    1. zend_function_entry myhello_functions[] = { 

    2.     PHP_FE(confirm_myhello_compiled,    NULL)        /* For testing, remove later. */ 

    3.     PHP_FE(exttest, NULL) // 新增的行 

    4.     {NULL, NULL, NULL}    /* Must be the last line in myhello_functions[] */ 

    5. }; 

    在PHP_FUNCTION(confirm_myhello_compiled) 后添加我们的新函数

    PHP_FUNCTION(exttest) {  

    char *arg = NULL;

     int n1,n2;

     if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &n1, &n2) == FAILURE) {   return;  }

     RETURN_LONG(n1+n2);

    }

    四  构建dll扩展文件 (vc9(vs2008)为最低版本)

    vs2008打开hello.dsp,选择编译方式为Release_TS,然后开始编译,或者在通过命令行进入ext/hello 执行 msdev hello.dsp /MAKE “hello - Win32 Release_TS” 如果成功,则会在ext同级目录Release_TS中生成php_hello.dll。 

    五 测试

    <?php

    echo  confirm_firstext_compiled('firstext');

    echo   '<br/>1+2='; echo   exttest(1,2);

    ?>

    Tips(错误):

    (1)无php5ts.lib文件:将C:php-5.3.10devphp5ts.lib拷贝到myextension目录下

     (2)没有找到cl.exe(加入vs2008的环境变量)

     (3)"sh" 下载cygwin,并修改ext_skel_win32.php的path

     (4)其它错误参考原文

    原文地址:

    http://blog.csdn.net/u013927110/article/details/44020675

    http://blog.csdn.net/qian_f/article/details/27205567

  • 相关阅读:
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
    controller配置方式总结(继上)
    架构师的自我修养
    SpringMVC快速入门
    第十六章:字节流与字符流
    第十五章:文件操作
    第十四章:类库使用案例分析
  • 原文地址:https://www.cnblogs.com/qiujun/p/7256807.html
Copyright © 2020-2023  润新知