开始之前
本教程将演示如何为 Eclipse 配置 PHP Development Tools(PDT)插件以调试 PHP 脚本,并介绍在详细查看脚本时应使用哪些透视图(即 PHP 调试)。
完成本教程后,您将能够使用 PDT 项目开发 PHP 应用程序,从而在 Eclipse 中设置 XDebug — 一种开源项目,可以调试可执行的或运行在 Web 服务器上的脚本 — 或 Zend Debugger。您将了解 PDT 项目的 PHP Debug 透视图的各个部分,并了解如何设置、查看和使用断点。您还将了解在单步调试代码时如何检查变量的值,以及如何在本地服务器上调试 PHP Web 应用程序,从而使用调试器遍历 PHP Web 应用程序。
要从本教程获得最大收益,您应该熟悉一些 PHP 开发。最好是曾经进行过软件开发。如果熟悉其他语言的调试,则可以更好地理解调试概念。本教程适合于接触 Eclipse 不多的新手,而不是长期使用 Eclipse 的人员。
要完成本教程,您需要以下设置:
-
运行 Microsoft® Windows®、Mac OS X 或 Linux® 的计算机
-
本教程的示例 php.ini 文件用于 Mac OS X 和 Linux 系统。由于两种调试器都需要进行配置,以告诉 PHP 调试器扩展的位置,因此惟一明显的区别 — 如果查看 Windows 示例 — 是调试器扩展的路径。对于 Mac OS X 和 Linux,库名以
.so结尾。对于 Windows,库名以
.dll 结尾;同样,使用正斜杠(
/
)而不是反斜杠(\
)作为目录分隔符。
-
PHP V5.x
-
Linux 用户可以使用其发行版中附带的软件包安装 PHP。OS X 和 Windows 用户可以在 PHP.net 中查找
PHP V5.x。
注意:本教程的示例使用的是 PHP V5.2.5。
-
Eclipse V3.3
- Linux 用户可以很容易获得 Eclipse,因为它通常包含在发行版附带的软件包中。也可以在 Eclipse 下载 中找到 Eclipse 集成开发环境(IDE)。
-
用于 Web 应用程序的 Apache 或 Microsoft Internet Information Services(IIS)
- 需要安装一个 Web 服务器来运行教程示例,演示如何在服务器中调试 PHP Web 页面。然而,如果只希望调试非 Web 页面的 PHP 脚本,则不需要使用 Web 服务器。对于本教程,我们使用 Apache V2 作为 Web 服务器。此外,也可以使用 Windows 和 IIS。本教程需要您具有适当的访问权限,可以写 Web 服务器文档的根目录。
-
Eclipse PHP Development Tools 框架
- 如果还没有安装 PHP Development Tools (PDT),请阅读 “PDT 项目概述” 小节,以决定是否需要下载并安装绑定在 Zend Debugger 中的 PDT。Eclipse Foundation PDT/Installation wiki 提供了简要的说明。
-
Zend Studio Web Debugger
- 下载 Zend Studio Web Debugger 的 30 天试用版。
安装和配置调试器
本节将介绍调试器的配置并将它连接到 PDT 中,准备调试示例项目中的 PHP 文件。
两种调试器都需要进行配置,包括将扩展复制到一个目录、使用一些配置值配置扩展并重启 Web 服务器。完成这些工作后,就可以使用两种调试器中的一种调试 PHP 应用程序了。
注意:如果只希望调试 PHP 脚本(而不是服务器上的 Web 页面),并且还没有安装 PDT,最快速方法是使用 Eclipse 更新站点 Zend.com 来安装与 Zend Debugger 绑定在一起的 PDT 版本。安装完成后就可以在 IDE 中开始调试 PHP 脚本。
安装绑定的 Zend Debugger 很容易,因为可以从 Zend 的更新站点获得,就像从 Eclipse 更新站点获得 PDT 一样。如果从 Zend 的站点下载 PDT 绑定版,则可以立即开始调试脚本。
如果希望使用 Zend Debugger 在服务器上调试 PHP Web 页面,需要安装 PHP 扩展并在 php.ini 配置文件中进行配置。要安装和配置这些扩展,需要执行以下操作:
- 从 Zend 的 Web 站点下载 Zend Web 服务器扩展的二进制文件。
- 提取包含二进制文件的 ZIP 文件。
- 将扩展二进制文件(称为 ZendDebugger.dll 或 ZendDebugger.so)复制到一个文件夹。不一定非要将它们放到 PHP 扩展文件夹中,但这是一个不错的位置,因为这使所有的扩展二进制文件都集中到同一个位置。如果不知道具体是哪个文件夹,请查看 “故障排除” 一节。
- 使用清单 5 中的设置更新您的 php.ini 文件。可能需要验证正在编辑的文件是否是正确的 php.ini 文件。同样,必须确保
zend_extension
指令是正确的。请参看 “故障排除” 获得更多信息。
清单 5. 修改后的 php.ini
[Zend] zend_extension="/full/path/to/ZendDebugger.so" zend_debugger.allow_hosts="127.0.0.1, 10.0.1.3" zend_debugger.expose_remotely=always |
- 重新启动 Web 服务器。
- 检验 Zend Debugger 是否被正确安装,方法是在脚本中使用
phpinfo()
函数或php -m
命令并查看[Zend Modules]
。
清单 6.
php -m
命令的输出
[Zend Modules] Zend Debugger |
在检验安装时,如果没有看到列出的模块,则不能通过 PDT 运行调试器(这将在下一节描述)。在服务器调试文件之前,必须正确地安装模块。
如果检验到模块已成功安装,则继续 “设置 PDT” 小节。
要使用 XDebug 作为 PDT 的调试器,需要下载并安装 XDebug,就像没有使用 Eclipse 时的做法一样。有关 XDebug 的下载和安装说明请查看xdebug & eclipse pdt。在编写本教程时,这些说明仍然适用,但是本教程仅从较高的层次介绍了这些内容:
- 下载正确的二进制文件(Windows)或源文件(Linux 或 Mac OS X)。
- 如果使用的是 Mac OS X 或 Linux,则编译 XDebug 库。因此必须先在目录中运行
phpize
命令,然后运行make
命令,如下所示。
清单 7. XDebug 编译命令
# cd [directory_with_source] # phpize # make |
- 使用合适的
zend_extension
指令编辑 php.ini 文件以包括 XDebug 的模块(参见 “故障排除” 获得详细信息)。 - 重新启动 Web 服务器。
- 检验 XDebug 是否正确安装,方法是在 Web 服务器中使用
php -m
命令或脚本中的phpinfo()
函数。图 9 展示了phpinfo()
的输出示例。清单 8 展示了php -m
输出。
图 9.
phpinfo()
输出
清单 8. 示例
php -m
输出
[Zend Modules] Xdebug |
在使用 PDT 和 XDebug 进行调试之前,必须正确安装模块。如果没有查看到模块信息,那么查阅 “故障排除” 小节获取提示。
在进行调试时,XDebug 的准备工作要比 Zend Debugger 多一些,因为您必须自己编译这些模块。但是现在您已经可以在 Web 服务器上调试本地脚本和文件。
当安装了这两种调试器的任意一种后,可以配置 PDT 使用调试器的方式,在 Eclipse PHP\Debug 之下使用首先项,如下所示。
图 10. PHP Debug 首选项
注意,在默认情况下,两种调试器被设置为侦听不同的端口:Zend Debugger 为 10000,XDebug 为 9000。根据您的环境设置,可能需要修改端口设置。如果修改了端口设置,确保没有将调试器配置为绑定在相同的端口(如果同时安装了两种调试器的话)。