PHP HelloWord 扩展建立编译

第一步先要生成 "main/config.w32.h"

方法原地址:http://www.flyinghail.net/archives/build-mainconfig-w32-h/

准备好PHP源代码,假设解压到 D:\php-src

下载2个必要的包
http://www.php.net/extra/bindlib_w32.zip
http://www.php.net/extra/win32build.zip
把这2个包的内容放一起,例如解压缩到 D:\win32build

请使用 Visual Studio Tools 下的 Visual Studio 命令提示 操作
进入D:\php-src\
执行buildconf.bat
建立一个临时环境变量,执行set path=%path%;D:\win32build\bin

执行 cscript /nologo configure.js –with-php-build=”../win32build” –without-libxml  –disable-odbc
如果想要No Thread Safe 模式就在上面的命令最后加上参数 –disable-zts

然后看看是不是main下面多了一个 config.w32.h~
还有一点,config.w32.h 里面 #define PHP_COMPILER_ID 改成和你正在用的 PHP 编译版本相同的编译器ID,例如VC6或者VC9,不然编译出来的扩展没法载入,说实话,这个ID的判断真的很傻很天真….

注:以上过程在PHP5.3.5 + VS2010 下测试通过




第二步建立php helloword 并在编译

方法地址:http://www.cnblogs.com/keyboard/archive/2013/01/24/2874136.html

Windows下开发php扩展文件的方法步骤

一.     首先在电脑上安装vc++6.0,然后将msdev.exe所在的路径添加到环境变量下

二.     下载php的源码包和windows下的二进制包(php-5.3.5-Win32-VC6-x86.zip和php-5.3.5.tar.gz),还有一个文件是config.win32.h

                     PHP HelloWord 扩展建立编译_第1张图片  

三.     将二进制码包与apache,mysql搭建好php的开发环境

四.     将源码包解压到D盘下,

        

五.进入到该文件加下的ext文件夹D:\php-5.3.5\ext,该文件夹下就是各种扩展的源码包,其中有一个文件夹是skeleton,

          PHP HelloWord 扩展建立编译_第2张图片

       拷贝一份skeleton文件夹,放在该目录下

            PHP HelloWord 扩展建立编译_第3张图片

       然后将skeleton-副本  重命名为keyboard(你想扩展的名字,随意),这样在ext目录下就有了一个keyboard文件夹

            

六.进入keyboard文件夹,可以看到有如下文件

        

将php_skeleton.h  ,  skeleton.c  , skeleton.dsp这三个文件重命名为php_keyboard.h   ,keyboard.c  ,keyboard.dsp ,然后将这三个文件中的extname全部替换为keyboard,EXTNAME全部替换为KEYBOARD(注意:严格区分大小写

       然后将php5ts.lib(在二进制包下的dev文件夹里)拷贝到该文件加下

     

七.打开php_keyboard.h文件,添加如下代码

       PHP_FUNCTION(hello);

       如下图所示

      PHP HelloWord 扩展建立编译_第4张图片

 八.打开keyboard.c文件,添加如下代码

PHP_FE(hello,NULL)  如下图所示

 

 

 

 

 

 

 

PHP_FUNCTION(hello)

{

       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, "The string you put in is : %s", arg);

       RETURN_STRINGL(strg, len, 0);

}

PHP HelloWord 扩展建立编译_第5张图片

 

九.打开cmd,进入到keyboard目录下

 

十.输入如下指令,如图

   

 如转载没图,图上内容是:>cscript /nologo configure.js --with-php=build="../win32build" --without--libxml --disable-odbc

 

十一.编译运行,会报如下错误

   

将config.win32.h拷贝到上级的D:\php-5.3.5\main目录下,继续上述步骤

十一.接着又会报一大堆的错误

           此时打开D:\php-5.3.5\main\streams\php_stream_transport.h,

在里面加上这么一句话typedef int socklen_t;

如下图

     PHP HelloWord 扩展建立编译_第6张图片

继续编译运行

十二.好了,现在编译成功了

   PHP HelloWord 扩展建立编译_第7张图片

 

至此,php_keyboard.dll文件已经生成了,在D:\php-5.3.5\Release_TS文件夹下。然后将它放在php的ext目录下,在

Php.ini中添加extension=php_keyboard.dll,重启apache。

编写如何测试文件test.php

<?php

                 Echo hello(“hahahahah”);

                 Phpinfo();

?>

打开浏览器,输入http://localhost/test.php,

即可看到

   

    

 

 

说明我们写的扩展已经发挥作用了!





你可能感兴趣的:(PHP HelloWord 扩展建立编译)