图片 2

详解Window7 下开发php扩展

PHP
尽管提供了大量有用的函数,但是在特殊情况下还可能需要进行扩展编程,比如大量的
PECL就是以扩展的形式提供的(动态链接库dll文件),它们比 PEAR
的运行效率要高很多。 PHP 扩展是用 C 或 C++ 编写的,需要编译成动态连接库
dll 文件后在 PHP 环境下注册后才能使用。 编写 PHP 扩展的软件要求:
VC++6.0 或 VC++.NET 环境。 PHP 的源代码,需要编译。 如果不愿意编译 PHP
的源代码,可以再下载 PHP 的已经编译成功的二进制代码(就是我们部署 PHP
运行环境的那些文件包)。注意分别下载的源文件包和已编译包,它们的版本必须一致。

一、首先查看phpinfo() 信息

过程:

PHP Version 5.4.34
Zend Extension Build API220100525,TS,VC9
PHP Extension Build API20100525,TS,VC9
Thread Safety enable

1,安装
VC++6.0,并选择把其可执行文件路径加入环境变量中,使在命令行环境任意路径下可以运行编译器。
2,安装 PHP 运行环境,并与 IIS 正确集成在一起。假设使用的 PHP 版本为
5.2.5,下载 php-5.2.5-Win32.zip 二进制包和 php-5.2.5.tar.gz
源代码包。安装环境为
C:php-5.2.5-Win32。分别把源代码包和二进制包解压到该文件夹下。从
php.ini-recommended 拷贝生成一个 php.ini 文件。 3,建立
C:php-5.2.5-Win32Release_TS 文件夹,拷贝 C:php-5.2.5-Win32devphp5ts.lib
文件到这里。 4,进入 C:php-5.2.5-Win32ext 文件夹,运行命令:
C:php-5.2.5-Win32ext..php.exe ext_skel_win32.php –extname=myphpext
Creating directory myphpext Creating basic files: config.m4 config.w32
.cvsignore myphpext.c php_myphpext.h CREDITS EXPERIMENTAL
tests/001.phpt myphpext.php [done].

线程安全,VC9编译,5.4.34版本

To use your new extension, you will have to execute the following steps:

二、开发前准备工作

  1. $ cd .. 2. $ vi ext/myphpext/config.m4 3. $ ./buildconf 4. $
    ./configure –[with|enable]-myphpext 5. $ make 6. $ ./php -f
    ext/myphpext/myphpext.php 7. $ vi ext/myphpext/myphpext.c 8. $ make

php 5.3-5.4 :Visual C++ 9.0(Visual Studio 2008)
安装Cygwin(下载地址:
php编译后的程序和编译前的源码(下载地址:
编译后的程序路径:php-5.4.45-Win32-VC9-x86
编译前的源码路径:php-5.4.45-src
下载php sdk文件,

Repeat steps 3-6 until you are satisfied with ext/myphpext/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start
writing code and repeat the last two steps as often as necessary.

1、解压php-sdk-binary-tools-20110915.zip里面的文件,将bison.exe所在的bin目录添加的系统path

将php-5.4.45-Win32-VC9-x86devphp5ts.lib
复制到php-5.4.45-srcRelease_TSphp5ts.lib
新建php-5.4.45-srcmainconfig.win32.h,内容如下:
#define SIZEOF_LONG 4
#define PHP_COMPILER_ID “VC9”
“VC9″对应VC9

2、找到php源码目录, php-5.4.45-srcextext_skel_win32.php

/*
This script can be used on Win systems
) Make sure you have CygWin installed
) Adjust the $cygwin_path to match your installation
) Change the environment cariable PATHEXT to include .PHP
) run ext_skel --extname=...
the first time you run this script you will be asked to
associate it with a program. chooses the CLI version of php.
*/
$cygwin_path = 'D:Program Filescygwinbin'; 

这里改成你的cygwin安装目录。

3、运行cmd,进入php源码目录, php-5.4.45-srcext,运行命令php
ext_skel_win32.php –extname=myphpexs

图片 1

记得将php.exe 所在目录加入path,–extname=你的扩展名字,

若成功会再ext目录下生成myphpexs文件夹,内容如下

图片 2

4、用vs2008 打开myphpexs.dsp, 解决方案配置改为Release,执行生成命令

顺利的话将生成php_myphpexs.dll文件,我的将php_myphpexs.dll生成再了php源码根目录的Release_TS文件夹中

5、将php_myphpexs.dll放到你php的扩展目录,再php.ini中加上extension=php_myphpexs.dll

6、新建php脚本文件test.php,内容如下

复制代码 代码如下:
echo confirm_myphpexs_compiled(‘test’);

7、运行测试文件,出现如下内容说明,成功了

复制代码 代码如下:
Congratulations! You have successfully modified ext/myphpext/config.m4.
Module 23 is now compiled into PHP.

8、confirm_myphpexs_compiled是建立扩展是自带的册数函数,在编辑你自己的扩展内容时,可以删除改函数

发表评论

电子邮件地址不会被公开。 必填项已用*标注