世界上有10种人:一种是懂二进制的,另一种是不懂的。

在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)

2010-02-26

最近PHP 5.2.12及5.2.13发布了,修复了多个bug,因此升级到这一版本是非常必要的。

首先说明一下我的一些参数:
操作系统: Windows 7 Ultimate
Web Server:Apache 2.2.14
Visual Studio: 6.0 (别嫌弃它版本老,即便是在Win7下它还是能用的,当然你用Visual Studio 2008也行)

什么是eAccelerator?
eaccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。

1.首先下载编译好的PHP二进制包。(稍后会用到) 地址如下:
http://cn.php.net/distributions/php-5.2.12-Win32.zip

http://cn.php.net/distributions/php-5.2.13-Win32.zip

2.再下载PHP的源代码,稍后编译eAccelerator的时候会用到。地址如下:
http://cn2.php.net/get/php-5.2.12.tar.bz2/from/a/mirror

http://cn2.php.net/get/php-5.2.13.tar.bz2/from/a/mirror

3.升级PHP:
这一过程很简单,首先关闭Apache,然后将压缩包里解压出来的所有文件替换掉原来的文件即可。例如你原来的PHP程序文件位于 D:\php,那么请将php-5.2.13-Win32.zip(或者php-5.2.12-Win32.zip)解压到这一路径下覆盖原有文件。

4.启动Apache,我们会收到一条报错信息,Apache无法启动。打开Apache的日志文件(此文件路径为apache\logs\error.log),我们会看到这样的提示信息:

PHP Warning:  [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.11.
Rebuild it for your PHP version (5.2.13) or download precompiled binaries.

意思就是当前的eAccelerator是为PHP 5.2.11编译的,不适用于5.2.13。我们应该重新编译一份eAccelerator。

5.下载一份eAccelerator的源码。地址如下:
http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip

6.将第2步骤下载到的PHP源码解压到某一目录下,例如 E:\php。然后打开你的PHP程序目录(也就是你的php.exe所在的目录),找到其中dev子目录下的php5ts.lib文件,把它复制到E:\php这一位置。

7.打开E:\php\ext,在这下面创建一个目录命名为eaccelerator,然后将第5步骤下载到的压缩包解压到此目录下。此时的目录结构应该是这样的:

图1

图1

8.打开win32子目录,其中应该有一个名叫eAccelerator.dsw的项目文件,用VS开发环境打开它(比如我用的就是VS6.0),打开”组件”>”配置”,选中 Win32 Release PHP5 这一选项,单击“关闭”。

图2

图2

9.按下F7键(或选择工具条中的编辑按钮)开始编译,稍等片刻,编译成功,你就可以在win32目录下看到生成了一个Release子目录,打开这个子目录,你就会看到已经生成了eAccelerator.dll文件。
将这个文件复制到你的PHP扩展目录下(如D:\php\ext),替换掉原有的文件,然后启动Apache,你就会发现eAccelerator已经成功加载了。

图3

图3

或者

猛击此处下载编译好的dll文件

Visual Studio 2008下编译可能会出现类似于“不能分配常量大小为 0 的数组”这样的报错信息,解决办法如下:

找到源码目录的main子目录,打开它,找到以下文件:
config.w32.h
 
在这个文件里查找 #define _USE_32BIT_TIME_T 1,将这一行注释掉。再重新编译即可。

作者:admin | 分类目录:PHP | 标签:

16 条评论

  1. 匿名人士 说道:

    原来这么简单

  2. 家昊 说道:

    可不可以 把你编译好的 给我发一份啊 我编译的时候老是提示错误 谢谢了 我的php 5.2.13 的 也是 !
    e-mail: jiahao1110@gmail.com

  3. admin 说道:

    文章中已给出下载,谢谢关注。

  4. 济南seo 说道:

    博客模板不错啊很漂亮啊 继续加油啊兄弟顶你了啊 O(∩_∩)O哈哈~回踩啊谢谢济南seo(济南seo)

  5. 2j 说道:

    楼主,能不能在2003下编译下,你编这个在2003是不能运行的。

  6. admin 说道:

    按照我这方法编译出来的5.2.12版是可以在Win2003下运行的(已测试过)。而我直接给出下载的5.2.13版是使用Visual Studio 2008编译的,你可能要先安装vc2008运行库才行。

  7. 2j 说道:

    好的,我去试试,谢谢楼主。

  8. 2j 说道:

    确实如你所说,加上VS2008运行库就正常了,非常感谢博主,帮了大忙,谢谢!!

  9. bluephp 说道:

    请问下vs2008怎样编译。
    (PHP 5.2.13 + eAccelerator 0.96)
    能图解一下吗。从未使用过vs2008及系列。

  10. admin 说道:

    0.96版编译的时候总是报错,不知道什么原因,建议编译一下0.9.5.3版。
    过程我在文章中写了,VS2008编译与VS以前版本一样,打开项目后直接编译就行了。

  11. 匿名 说道:

    感谢一下

  12. 飞力 说道:

    我用VS2010 编译的时候提示
    错误 15 error LNK1181: 无法打开输入文件“php5.lib”

    请问如何解决?

  13. 飞力 说道:

    现在改用VC++ 6.0 也是这个问题,PHP 5.2.14 / eaccelerator-0.9.6

  14. admin 说道:

    暂时没有用VS2010编译过,抱歉,目前还不能给你建议。

  15. admin 说道:

    0.9.6编译时的确有问题,我每次都编译失败,建议尝试编译一下0.9.5.3。

  16. GAN 说道:

    回复“飞力”,请看作者写的第6条

    6.将第2步骤下载到的PHP源码解压到某一目录下,例如 E:\php。然后打开你的PHP程序目录(也就是你的php.exe所在的目录),找到其中dev子目录下的php5ts.lib文件,把它复制到E:\php这一位置。

发表评论

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

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">