本文介绍调试 PHP 应用程序的各种方法,包括在 Apache and PHP 中打开错误报告,以及通过在一个简单的 PHP 脚本中放置策略性的 print 语句,找到更困难的 bug 的源头。还会介绍用于 Eclipse 的 PHPEclipse 插件,这是一个灵活的开发环境,具有实时语法解析能力,还会介绍 PHPEclipse 的 DBG 调试器扩展。
简介
有许多 PHP 调试技术可以在编码的时候节约大量时间。一个有效却很基本的调试技术就是打开错误报告。另一个略微高级一点的技术包括使用 print 语句,通过显示在屏幕上实际出现的内容,有助于精确地找出更难发现的 bug。PHPEclipse 是一个 Eclipse 插件,能够强调常见的语法错误,可以与调试器结合起来用于设置断点。
设置
要学习本文描述的概念,需要 PHP、Web 服务器和 Eclipse。调试器扩展支持的 PHP 版本是 V5.0.3。
我们需要一个 Web 服务器来解析用 PHP 创建的页面并把它们显示到浏览器。本文中使用的是 Apache2。但是,任何 Web 服务器都可以满足要求。
要利用本文中介绍的一些调试技术,需要安装 Eclipse V3.1.1 和插件 PHPEclipse V1.1.8。由于 Eclipse 要求 Java™ 技术,所以还要下载它。
还需要 PHP 的调试器扩展模块。安装它略有些麻烦。请仔细跟随安装调试器扩展的操作说明。现在,先在 php.ini 文件中注释掉那些要求装入和配置 PHP 扩展的行。在需要使用调试器的时候,再取消注释。
请参阅 参考资料 获得下载信息。现在介绍出错消息。
出错消息
出错消息是作为开发人员的第一道防线。谁都不想在一台没有配置成显示出错消息的服务器上用 PHP 开发代码。但是,请记住,当代码调试完成,准备运行的时候,应当确保关闭了错误报告,因为不希望站点的访问者看到出错消息,因为这会给他们提供足够的信息来利用站点的弱点并黑掉站点。
也可以用出错消息为自己服务,因为它们会显示抛出或生成错误的正确代码行。这样,调试就变成在浏览器上查看生成的错误所显示的行号,并在代码中检查这一行。稍后,将会看到 PHPEclipse 插件通过即时地给语法错误加下划线并在保存文件时用红色 “x” 标注语法错误,可在开发和调试过程中提供极大的帮助。
先来看如何在 php.ini 文件中开启错误报告并设置错误报告的级别。然后将学习如何在 Apache 的配置文件中覆盖这些设置。
PHP 的错误报告
php.ini 文件中有许多配置设置。您应当已经设置好自己的 php.ini 文件并把它放在合适的目录中,就像在 Linux 上安装 PHP 和 Apache 2 的文档说明中所示的那样(请参阅 参考资料)。在调试 PHP 应用程序时,应当知道两个配置变量。下面是这两个变量及其默认值:
[url=http://www.ibm.com/developerworks/cn/opensource/os-debug/#resources]参考资料[/url] 获得 Eclipse 平台的介绍。
用于 Eclipse 的 PHPEclipse 插件是用来开发 PHP 应用程序的一个流行工具。请启动 Eclipse 并把工作区目录指定为 Apache 的 www 目录(在我的机器上是 c:\www)。现在单击 [b]File > New > Project[/b]。会弹出 New Project 向导。双击 PHP 文件夹并选择 PHP Project。单击 [b]Next[/b],输入项目名称 debugArticle,并单击 [b]Finish[/b]。
如果把 Web 服务器设置为在端口 80 上侦听,那么不需要做任何修改。否则,请转到 Navigator 窗口,在 PHP 项目 [b]debugArticle[/b] 上右击,选择 Properties,然后单击 [b]PHP Project Settings[/b]。单击 [b]Configure Workspace Settings[/b] 然后修改合适的 localhost 或者添加 Web 服务器侦听的端口(例如 http://localhost:8080)。单击 [b]Apply[/b] 完成设置。
Navigator 窗口应当显示项目和一个 .project 文件。在项目上右击,就像前面做的那样,只是这次选择 [b]New > PHP File[/b]。用想要创建的 PHP 文件的名称 test3.php 替换 *.php,然后单击 [b]Finish[/b]。在 Eclipse IDE 中应当出现一个新文件。可能需要导航到窗口底部的 PHP 浏览器来查看 PHP 文件的当前输出(参见图 5)。
[url=http://www.ibm.com/developerworks/cn/opensource/os-debug/#resources]参考资料[/url] 获得一些 PHP 教程,可以在上面测试这些新技能。
下载 [url=http://xiazai.jb51.net/200911/yuanma/os-debugsource.zip]Sample code for PHP Debugging[/url]
[url=http://www.ibm.com/developerworks/opensource/library/os-debug/?S_TACT=105AGX52&S_CMP=cn-a-os]英文原文[/url]。
[*]学习如何在基于 Windows 和 UNIX® 的系统上 [url=http://www.jibble.org/settingupjava.php]安装 Java[/url]。
[/*][*]请访问 [url=http://www.eclipse.org/]Eclipse.org[/url] 获得编程和如何使用它的全面信息。
[/*][*]“[url=http://www.ibm.com/developerworks/cn/linux/opensource/os-ecov/]Eclipse 平台入门[/url]”(developerWorks,2002 年 11 月)提供了 Eclipse 的历史和概述,包括如何安装 Eclipse 和插件的细节。
[/*][*]请访问 [url=http://www.phpeclipse.de/]PHPEclipse[/url] 学习关于安装 PHPEclipse 和如何使用它的更多内容。
[/*][*]DBG 是一个全功能的 PHP 调试器引擎,一个交互的工具,有助于调试 PHP 脚本。请阅读 [url=http://www.plog4u.org/index.php/Using_PHPEclipse_:_Installation_:_Installing_the_DBG_Debugger]Installing and configuring the debugger[/url] 上的这份教程。
[/*][*]要学习关于 Eclipse 的更多内容,请访问 developerWorks 的 [url=http://www.ibm.com/developerworks/opensource/top-projects/eclipse.html?S_TACT=105AGX52&S_CMP=cn-a-os]Eclipse project resources[/url]。
[/*][*]要学习关于 PHP 的更多内容,请访问 developerWorks 的 [url=http://www.ibm.com/developerworks/opensource/top-projects/php.html?S_TACT=105AGX52&S_CMP=cn-a-os]PHP project resources[/url]。
[/*][*]请参阅 PHP 手册获得更多关于 [url=http://php.net/error_reporting]error reporting[/url] 的内容。
[/*][*]请阅读安装 [url=http://dan.drydog.com/apache2php.html]PHP and Apache2 on Linux[/url] 的操作说明。
[/*][*]请阅读安装 [url=http://www.php-mysql-tutorial.com/install-apache-php-mysql.php]PHP and Apache2 on Windows[/url] 的操作说明。
[/*][*]要获得一系列学习 PHP 编程的 developerWorks 教程,请参阅 “[url=http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=91117]学习 PHP,第 1 部分[/url]”、[url=http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=91118]学习 PHP,第 2 部分[/url] 和 [url=http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=91693]学习 PHP,第 3 部分[/url]。
[/*][*]请密切关注 [url=http://www.ibm.com/developerworks/offers/techbriefings/?S_TACT=105AGX52&S_CMP=cn-a-os]developerWorks technical events and webcasts[/url]。
[/*][*]请访问 developerWorks [url=http://www.ibm.com/developerworks/cn/opensource]开放源码专区[/url] 获得丰富的 how-to 信息、工具和项目更新,有助于用开放源码技术进行开发并把它们用于 IBM 的产品。
[/*][/list]
[b]获得产品和技术[/b]
[list]
[*]请从 PHP.net 下载最新版本的 [url=http://www.php.net/downloads.php]PHP[/url]。
[/*][*]请下载最新版本的 [url=http://httpd.apache.org/download.cgi]Apache 2[/url]。
[/*][*]请从 Sun 公司下载 [url=http://java.sun.com/downloads/]Java 技术[/url]。
[/*][*]请从 Eclipse.org 下载最新版本的 [url=http://www.eclipse.org/downloads/]Eclipse[/url]。
[/*][*]请从 Sourceforge 下载 [url=http://sourceforge.net/project/showfiles.php?group_id=57621]PHPEclipse[/url]。把 Eclipse 解压到 eclipse-install-dir,然后把 PHPEclipse 解压到 eclipse-install-dir。在安装扩展时,要按照 [url=http://www.plog4u.org/index.php/Using_PHPEclipse_:_Installation_:_Installing_the_DBG_Debugger]PHPEclipse instructions[/url]。但是,在要求在 php.ini 文件中装入和配置 PHP 扩展的地方注释掉那些行。在准备使用调试器时再取消这些行的注释。
[/*][*][url=http://www.ibm.com/developerworks/offers/sek/?S_TACT=105AGX52&S_CMP=cn-a-os]订购免费的 SEK for Linux[/url],这套 DVD(两张),包含了来自 DB2®、Lotus®、 Rational®、Tivoli® 和 WebSphere® 的用于 Linux 的最新 IBM 试用软件。
[/*][*]请用 [url=http://www.ibm.com/developerworks/downloads/?S_TACT=105AGX52&S_CMP=cn-a-os]IBM 试用软件[/url] 改造您的下一个开放源码开发项目,可以下载也可以通过 DVD 得到。
[/*][/list]
[b]讨论[/b]
[list]
[*]通过参与 [url=http://www.ibm.com/developerworks/blogs/?S_TACT=105AGX52&S_CMP=cn-a-os]developerWorks blogs[/url] 加入 developerWorks 社区。[/*][/list]
[url=http://www.ibm.com/developerworks/cn/opensource/os-debug/]http://www.ibm.com/developerworks/cn/opensource/os-debug/[/url]