Thu 7 Jun 2007
在 Zend Studio 中开启 PHP 5.2.x 环境的远程调试功能
Posted by yAnbiN under PHP
[21] Comments
以前每当一个 Zend Studio 的新版本发布时都会同时发布一个新版的 Zend Studio Server 组件,这个组件可以让我们很方便地进行远程调试。但是自从 Zend 发布了 Zend Platform 以后他们就不再更新 Zend Studio Server 组件了。这就导致我们只能远程调试 PHP 5.1.x 的环境,而不能调试 PHP 5.2.x。要想调试 PHP 5.2.x 只能装一个庞大的 Zend Platform。:(
因此我一直在找一个“轻量级”的解决方案。近日在逛 Zend.com 时发现了一个好东西:Zend Studio Web Debugger,直觉告诉我,这就是我想要的。果不其然,今天试验成功!
下面就说一说我的试验步骤:
- 到这里下载 Zend Studio Web Debugger,然后将其解压到某一目录,比如:C:\Program Files\Zend,这就会在该目录里面新建一个 ZendDebugger-5.2.14-Windows-i386 子目录,里面有 4_3_x_comp、4_4_x_comp、5_2_x_comp 等目录,将这些 x_y_z_comp 分别改为 php-x.y.z(比如将目录 5_2_x_comp 改为 php-5.2.x);
- 确保已经加载了 Zend Extension Manager,如果安装了 Zend Optimizer 则会自动安装 Zend Extension Manager,若没有安装请先安装 Zend Optimizer 。或者你可以把 Zend Optimizer 中 Zend Extension Manager.dll 给提取出来,然后手工在 php.ini 中添加一行:
zend_extension_ts="C:\Program Files\Zend\ZendOptimizer\ZendExtensionManager.dll"
其中 ZendExtensionManager.dll 的位置请根据你的实际情况填写; - 在 Web Server 的 php.ini 添加下面几行:
zend_extension_manager.debug_server_ts="C:\Program Files\Zend\ZendDebugger-5.2.14-Windows-i386"
zend_debugger.expose_remotely=allowed_hosts
zend_debugger.allow_hosts=127.0.0.1/32,192.168.1.0/16
zend_debugger.allow_tunnel=127.0.0.1/32
zend_extension_manager.debug_server_ts 的值请根据你的实际情况填写,就是 php-x.y.z 的父目录。 - 把 ZendDebugger-5.2.14-Windows-i386 目录下的 dummy.php 复制到你的 Web 站点根目录。
- 重启你的 Web Server,OK!
简单总结一下:Zend Studio 的远程调试功能是由 Zend Studio Server 组件(ZendDebuger.dll)提供的。本质上这是一个 Zend 扩展,因此你只要能把这个 Zend 扩展启用就可以了。只是 Zend 公司出品的 Zend 扩展只能由那个 Zend Extension Manager 负责加载,所以我们才需要做一些额外的步骤,否则只需简单地加一行 zend_extension_ts = xxxxxx
而已。
21 Responses to “ 在 Zend Studio 中开启 PHP 5.2.x 环境的远程调试功能 ”
Trackbacks & Pingbacks:
-
Server…
[…]在 Zend Studio 中开启 PHP 5.2.x 环境的远程调试功能 – 抚琴居[…]…
好文,呵呵,现在我已经用zenddebuger+eclipse替代zend studio了.
反正在意的也就是他的debugger功能,不必要多装一个ide咯;)
eclipse 我用着感觉还是没有 Zend Studio 爽~ 😀
请问一下我试了怎么不成功,是不是还要安 ZendStudioServer 这个组件?
先看一下 phpinfo() 里面有没有“with Zend Extension Manager v1.x.x, Copyright (c) 2003-2006, by Zend Technologies“,若没有则说明没有正确加载 Zend Extension Manager,您需要先加载一下。方法见步骤2。然后再看有没有“ with Zend Debugger v5.2.3, Copyright (c) 1999-2006, by Zend Technologies” 这句话。没有则说明没有加载 Zend Debugger。请再设法加载 Zend Debugger 。
总之,一步一步来,先确认问题在哪里然后才好解决。:)
我试过 pdt 1.0 + zend debugger 5.2.6 ,在服务器端配置 zend debugger 时可以不要 zend extension manager ,类似这样就差不多了:
[ZendDebuger]
zend_extension_ts=”D:/Program/php5/ext/ZendDebugger.dll”
zend_debugger.allow_hosts=192.168.50.1
zend_debugger.expose_remotely=always
一般用 zend_extension_ts (zend 线程安全扩展) 方式加载即可,有时候可能是 zend_extension 或者 zend_extension_debug 等(根据 phpinfo 中信息可以确定)。
我安装不成功
我的php.ini
[Zend]
zend_optimizer.optimization_level=15
#Zend-AppServ
#Zend-Manager
zend_extension_manager.optimizer_ts=”C:\Program Files\Zend\ZendOptimizer-3.2.6\lib\Optimizer-3.2.6″
zend_extension_manager.debug_server_ts=”C:\Program Files\Zend\ZendDebugger-5.2.3-Windows-i386″
zend_debugger.expose_remotely=allowed_hosts
zend_debugger.allow_hosts=127.0.0.1/32,192.168.1.0/24,192.168.1.0/24
zend_debugger.allow_tunnel=127.0.0.1/32
我也不成功,配置如下:
Apache/2.2.4
php 5.2.2
[Zend]
zend_extension_manager.optimizer_ts=”D:\Program Files\Zend\ZendOptimizer-3.2.2\lib\Optimizer-3.2.2″
zend_extension_ts=”D:\Program Files\Zend\ZendOptimizer-3.2.2\lib\ZendExtensionManager.dll”
;
zend_extension_manager.debug_server_ts=”D:\Program Files\Zend\ZendDebugger-5.2.3-Windows-i386″
zend_debugger.expose_remotely=allowed_hosts
zend_debugger.allow_hosts=127.0.0.1/32
zend_debugger.allow_tunnel=127.0.0.1/32
启动错误为:
[Wed Jun 20 16:02:18 2007] [notice] Parent: Created child process 4956
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at ‘D:\\Program Files\\Zend\\ZendDebugger-5.2.3-Windows-i386\\php-5.2.x\\ZendDebugger.dll’) – try reinstalling the Zend Debug Server in Unknown on line 0
不知问题出在哪里
楼上几位哥们把压缩包的文件释放到 ZendDebugger-5.2.3-Windows-i386 后修改里面的 5_2_x_comp 的目录名了吗?注意要把 5_2_x_comp 修改为 php-5.2.x 。
已经配置好了,配置信息如下:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with Zend Extension Manager v1.0.9, Copyright (c) 2003-2005, by Zend Technologies
with Zend Debugger v5.2.6, Copyright (c) 1999-2007, by Zend Technologies。
为什么刷新这个页面仍然不能到所设定的断点那儿啊?
要在 Zend Studio 【Debug】–>“Debug URL(选中下面的“The Server”复选框)” 一下你的页面地址~
楼主,我按你的步骤都做了,公司的电脑可以连到zenddebugger,家里的就不行,环境都一样,不知道为什么不行,家里的可以加载Zend Extension Manager v1.0.0,zenddebugger死活加载不上,现在不知道问题所在,解决也不知从何入手,楼主有什么解决方法或者解决思路吗,谢谢啦,憋了好几天,5555
ZendDebugger-5.2.3 自带的 Zend Extension Manager 是 1.2.0 版本,你试一下~
ZendDebugger-5.2.3自带Zend Extension Manager,我怎么没找到呢,我是从ZendOptimizer里提取的 ZendExtensionManager.dll
终于搞定了,真的是Zend Extension Manager 版本的问题,换成1.2.0版本就好了,谢谢楼主提醒,遇到这类问题真是头疼,ZendDebugger-5.2.3里的readme也没提到要什么版本的Zend Extension Manager ,相关信息也不知去哪里找,楼主真厉害,一下就看出来了,怎么分析的,最后再次感谢,困扰了我一周的问题~~
我的是原来的,就这个
[Zend]
zend_extension_manager.optimizer_ts=”e:\Program Files\Zend\ZendStudioServer-5.1.0\lib\Optimizer-2.6.1″
zend_extension_ts=”e:\Program Files\Zend\ZendStudioServer-5.1.0\lib\ZendExtensionManager.dll”
zend_extension_manager.debug_server_ts=”e:\Program Files\Zend\ZendStudioServer-5.1.0\lib\Debugger-5.1.0″
studio.install_dir=”e:\Program Files\Zend\ZendStudioServer-5.1.0″
zend_debugger.expose_remotely=allowed_hosts
zend_gui.ini_modifier=”e:\Program Files\Zend\ZendStudioServer-5.1.0\sbin\ini_modifier.exe”
zend_debugger.deny_hosts=
zend_gui_password=e10adc3949ba59abbe56e057f20f883e
zend_debugger.allow_hosts=127.0.0.1/32
zend_ini_file=”e:\Program Files\Zend\ZendStudioServer-5.1.0\etc\zend.ini”
你太有才了,多谢!
PHP Version 5.2.5
with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies
with Zend Debugger v5.2.10, Copyright (c) 1999-2007, by Zend Technologies
您好,我是PHPChina网站的负责人,看到你的个人网站或是日志,感觉非常不错.我们已经有很多可以合作的地方.如方便请和我联系,随时恭候您的消息.
谢谢你的分享
你讲的这个有点问题,在xampp环境下要把Zend Optimizer注释掉才可以,没办法启动的人可以翻翻别的教程