zoukankan      html  css  js  c++  java
  • php扩展开发

    本文的环境是windows下开发php版本5.3

    1、下载php5.3的源码包和php5.3的二进制包(平时使用的php程序包)

    2、下载cygwin,并默认安装在c:cygwin,因为生成php扩展框架的程序需要cygwin

    3、假设php扩展的工作目录为d:php,解压源码包和二进制包到这个目录

    4、cmd命令行在d:phpext目录中运行 php ext_skel_win32.php --extname=yourext  (如果php.exe程序的路劲未加入系统环境变量则需要自己指定路径)

    5、如果顺利的话应该在ext目录下生成了yourext的目录了,目录中有个xmltpm.sln的文件,用vs2008(也就是vs9)打开,貌似我用vc6打开编译有很多编译错误,可能因为官网上说明php5.3对应vc2008导致的

    6、现在加入自己的第一个函数,在yourext.h中找到PHP_FUNCTION(confirm_yourext_compiled);/* For testing, remove later. */ 这一行,在下面加入PHP_FUNCTION(your_func); 代表声明了your_func的函数

    7、在yourext.c中找到PHP_FE(confirm_yourext_compiled,NULL)/* For testing, remove later. */ 下面加上 PHP_FE(your_func,NULL)

    8、在yourext.c中找到PHP_FUNCTION(confirm_yourext_compiled) 下面加上

     PHP_FUNCTION(your_func)

    {

    php_printf("Hello, php ext");

    }

    这样就完成了一个函数的添加

    9、现在开始编译,菜单->生成,应该会提示找不到..mainconfig.w32.h,在d:win32uildconfig.w32.h.in 到d:phpmain目录下并改名为config.w32.h

    然后需要复制d:phpdevphp5ts.lib 到d:phpextyourext 目录

    顺利的话应该可以编译成功了,至少我编译成功了

    10、因为我编译的是非线程安全版本的,所以需要修改工程属性-》配置属性-》c/c++-》预处理器 删除预处理器定义里的ZTS=1,

    然后必须在 d:phpmainconfig.w32.h  加上一句#define PHP_COMPILER_ID "VC9"

    否则会出现下面的错误

    PHP Warning: PHP Startup: yourext: Unable to initialize module
    Module compiled with build ID=API20090626,NTS
    PHP compiled with build ID=API20090626,NTS,VC9
    These options need to match
    in Unknown on line 0

    在linux下编译前需要修改配置
    修改config.m4文件将10、11、12三行最前面的dnl删除掉,将

    dnl PHP_ARG_WITH(ccvita, for ccvita support,
    dnl Make sure that the comment is aligned:
    dnl [ --with-ccvita Include ccvita support])

    修改为
    PHP_ARG_WITH(ccvita, for ccvita support,
    Make sure that the comment is aligned:
    [ --with-ccvita Include ccvita support])

  • 相关阅读:
    线程基础知识归纳
    并发编程情况下几个相应问题简介
    Spring Security的RBAC数据模型嵌入
    Mysql插入中文的字段内容时乱码的解决方法
    部分排序算法总结
    sendEmail 阿里云使用587端口
    linux服务器关闭ipv6 方法
    centos 6.8 安装git 报错
    强大的xargs
    nfs环境搭建报错clnt_create: RPC: Program not registered
  • 原文地址:https://www.cnblogs.com/zhenzhong/p/3765328.html
Copyright © 2011-2022 走看看