编辑: LinDa_学友 | 2013-04-16 |
许多开发人员都经历过这种头痛.所以本章将讨论一些读者可能遇到的问题,提出几 个排除故障的策略. 18.1 安装故障的排除 假定要访问 PHP、MySQL 或Apache,但却遇到了许多问题.可能它们由于某种原因 不能很好地合作,并显示出奇怪的错误.也可能它们没有按照安装指令来工作. 在许多情况下,常见的错误或故障都在 AMP 中每个组件的网站上讨论过了.网站还 为用户使用的系统提供了详细的指导, 读者最好仔细阅读它们, 确保完全按照指令来安装. 如果配置 PHP 时遇到服务器找不到某个库的错误,建议检查如下内容: 验证在配置命令中指定了正确的路径 确保在机器上安装了该库及其所有从属文件 确保在修改 php.ini 或httpd.cof 文件后, 重启动了 Apache 网络服务器(修改.htaccess 文件不需要重启动) 18.2 解析错误 读者肯定常常见到下面的信息: Parse error: parse error, expecting "," or ";
" in /foo/public_html/forum/ index.php on line
25 这是该死的解析错误.这很常见,甚至即使是有经验的编程人员也常常遇到它们.即 使使用最好的彩色编码 PHP 文本编辑器来帮助检查语法,也肯定会漏掉一两个解析错误. 这些错误非常令人沮丧,但它们通常是最容易改正的错误,因为它们常常是由于语法错误 引起的,而不是逻辑错误.可以通过检查是否遗漏了分号、逗号,或引号的位置有错误来 第章18 Web 开发入门经典――使用 PHP
6、Apache 和MySQL
580 改正这些错误. 18.2.1 清理第
16 行,但其实第
94 行有错 PHP 显示解析错误时,会包含行号,这提供了解决问题的第一个线索.但有时行号也 会误导我们.实际上,有时有错误的行会出现在服务器指定的行的前面几行. 例如,考虑某个遗漏的分号,由于没有分号告诉服务器语句已结束,服务器就会把后 续的行串在一起.服务器在数行代码后才发现问题,于是就在错误的行上发出一个解析错 误.遗漏了引号或括号,也会出现相同的情况.例如下面的代码(已经添加了行号,以演示 上述情况):
1 运行这个测试代码,得到的错误如下: Parse error: parse error, unexpected T_VARIABLE in C:\Program files\Apache Software Foundation\Apache2.2\HTDOCS\error.php on line
5 为了便于演示,把上述脚本命名为 error.php,可以看出,服务器指出第
5 行有错,但 实际上错误发生在第
4 行.因为我们在第
4 行末遗漏了分号,所以第
5 行就被看作第
4 行 的续行,因此,PHP 被搞糊涂了. 18.2.2 基本常识 有时最简单的答案就是正确的答案.确保完成了如下所有的工作: 每个语句都以分号结尾 所有的左引号、括号和花括号都有对应的右引号、括号和花括号匹配. 所有的单引号和双引号都正确嵌套和/或转义. 如果在编写代码时,定期检查语法,就会大大减少解析错误.可以使用熟悉的 PHP 编 辑器,在编写代码时,给程序显示彩色代码.在拼错了函数名或者忘记关闭引号时,语法 的突出显示就会使我们更容易识别这些错误.我们用一个表格来比较了各种文本编辑器, 其中一些支持对语法的突出显示,这个表格参见附录 E. 18.3 空变量 我们建立了一个很大的页面,从用户处收集了