最新消息:xilo的博客2016重新上线,感谢新老朋友的热情关注。

Zend Studio 5.5调试PHP5.2.x 方法

工具 xilo 1587浏览 0评论

记得很久以前,一直在用zend studio调试php开发程序。后来php升级到5.2后,zend debugger只到5.1.4。那时,若想要调试,只有降级php,十分郁闷。

如今zend debugger升级到5.2.14而且可以对php5.2.x版本进行调试了。

以前,可以使用随Zend Studio Server进行服务器端的调试。可是从PHP5.2开始Zend公司不再单独推出Zend Studio Server了,内部集成的环境和真实的服务器环境总又有那么多的差异,使调试工作变得复杂。

我们可以使用Zend Platform或者Zend Core进行服务器端得调试,这两个家伙都太胖了。不再单独推出Zend Studio Server,就是拜这两个家伙所赐,要么谁会去尝试Zend Platform和Zend Core呢?幸好Zend和IBM还有个PDT项目,我们可以从PDT中找到一个Zend Debugger 5.2.14(以前得Zend Studio Server的核心部分)。

下面介绍方法:

下载zend debugger 与dummy.php文件:http://downloads.zend.com/pdt/server-debugger/

根据你安装的php版本,选择相应的文件。5.2.x有2个编译好的dll,其中5_2_x_nts_comp是“non-tread safe”的,因此我使用5_2_x_comp内的dll

将ZendDebugger.dll放到<<自定义目录>>下(随便放,规矩即可。有放在php下,我放在zend下,方便查找),将dummy.php放到网站根目录下

>> 1 找到php.ini

>> 2 查找output_buffering改为Off,查找 implicit_flush 改为On

        output_buffering = Off
        implicit_flush = On

(“output_buffering”  ; 输出缓冲区大小(字节)。建议值为4096~8192。; 输出缓冲允许你甚至在输出正文内容之后再发送HTTP头(包括cookies)。; 其代价是输出层减慢一点点速度。; 设置输出缓冲可以减少写入,有时还能减少网络数据包的发送。; 这个参数的实际收益很大程度上取决于你使用的是什么Web服务器以及什么样的脚本。
implicit_flush”说明:; 是否要求PHP输出层在每个输出块之后自动刷新数据。; 这等效于在每个 print()、echo()、HTML块 之后自动调用flush()函数。; 打开这个选项对程序执行的性能有严重的影响,通常只推荐在调试时使用。; 在CLI SAPI的执行模式下,该指令默认为 On 。)

>> 3 在文件的最后加上

        [Zend]
        zend_extension_ts=<<自定义目录>>/ZendDebugger.dll
        zend_debugger.allow_hosts=127.0.0.1/32, 192.168.0.0/16     —服务器地址:我的是192.168.2.19
        zend_debugger.expose_remotely=always

>> 4 保存php.ini并重启服务器是设置生效

但是 如果已安装了Optimizer就会发现 php出现错误。细心的朋友就会发现zend_extension_ts有两个值,造成冲突。

Zend Optimize的配置为:

[Zend]
      zend_extension_ts=”d:\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll”
      zend_extension_manager.optimizer_ts=”d:\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0″

解释一下:
当你只安装Optimizer或Debugger的时候zend_extension_ts是直接指向Optimizer或Debugger的dll的,现在这个指向ZendExtensionManager
     ZendExtensionManager的原理是先找到zend_extension_manager.optimizer_ts指向的文件夹
    再去找php-5.2.x文件夹,并读取该文件夹下的ZendOptimizer.dll
    所以路径结构是D:\……\Optimizer-3.3.0\php-5.2.x\ZendOptimizer.dll
    但在zend_extension_manager.optimizer_ts里填的是php-5.2.x的父目录
     在安装zend debugger的时候注意: ZendDebugger-5.2.10 文件夹下也要用php-5.2.x 有的时候从网上下载的时候文件夹名称是php-5-2-x要把他改成php-5.2.x不然找不到文件.

插上Zend Debugger:

只要把解压后的 5_2_x_comp\ZendDebugger.dll 放在这样的路径下:

D:\Zend\ZendDebugger-5.2.14\php-5.2.x\ZendDebugger.dll

在php.ini加上
zend_extension_manager.debug_server_ts=”e:\Zend\ZendDebugger-5.2.14″
zend_debugger.expose_remotely=allowed_hosts
zend_debugger.allow_hosts=127.0.0.1/32,127.0.0.1/24或者zend_debugger.allow_hosts=127.0.0.1

以上为配置方法,以及如何解决Optimizer与Debugger兼容性问题。

下面附上我的配置:

[Zend]
zend_extension_manager.optimizer_ts=”d:\Program Files\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0″
zend_extension_ts=”d:\Program Files\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll”

zend_extension_manager.debug_server_ts=”d:\Program Files\Zend\ZendDebugger-5.2.14″
zend_debugger.allow_hosts=192.168.2.19
zend_debugger.expose_remotely=always

 

转载请注明:xilo blog » Zend Studio 5.5调试PHP5.2.x 方法

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 兄弟 真是爱死你 了 !!!! 对你的感谢 犹如滔滔江水连绵不绝 又如黄河泛滥 一发而不可收拾 如果你在北京 我请你吃饭
    ZT16年前 (2008-10-29)
  2. 很不错!
    跑步机品牌14年前 (2010-09-24)
  3. 貌似广告?
    xilo14年前 (2010-10-25)