www.baike369.com
百科369 > PHP教程 > PHP轻量级错误

PHP轻量级错误


1. 操作系统的差别

虽然PHP本身可以运行在许多不同的平台上,但并不意味着100%的PHP代码都能在这些平台上正常运行,一些操作系统的具体问题需要考量。

如异构平台下存在下面的问题:

  • PHP中的一些函数只对特定操作系统有效。
  • PHP中的一些函数在特定的操作系统下是不可用的。
  • PHP中的一些函数在不同操作系统下功能会稍有差别。
  • 不同系统路径分隔符,文件名大小写的区分。
  • 外部程序或服务,不能运行于所有的平台。

2. PHP配置产生的问题

PHP因为配置文件(php.ini)里设置参数的各不相同,有时很容易让人们陷入一些麻烦,一个较为普遍的问题就是magic_quotes_gpc()魔法引用函数。

如果在登录系统时没有打开该功能,当移植到magic_quotes_gpc()函数已经打开的服务器时,输入用户将会遭受“变量污染”而无法使用。

我们的PHP代码应该能够正确处理这些差异,可以使用ini_get()函数查看具体环境,然后做出适当的调整。

例如,在magic_quotes_gpc()函数已经打开的环境上,我们可以这样做:

<?php
if(ini_get("magic_quotes_gpc")){
  stripslashes($_GET["email"]);
}
$db->query("INSERT INTO emails VALUES(?)",array($_GET["email"]));
?>

3. 运行期间的错误

一旦代码在运行时出现异常,非致命的运行错误(Non-fatal Runtime Error)是最常见的PHP错误。一般是在运行过程中发生异常,但通常不是编程的逻辑错误,大部分是PHP本身以外的问题,例如,磁盘、网络或数据库出了问题。

还有的时候,比如,在运行时文件已经丢失,导致fopen()函数打开文件失败;再比如mysql_connect()参数不正确,用户帐号不对,或者因为网络原因,导致fsockopen()函数Socket建立失败等,这些都会在运行期间出现错误。


4. 抑止轻量级错误

在有些情况下,我们可以充分使用错误抑止符@,当语句或表达式出现轻量级错误时,@符号会将这些语句的错误信息关闭掉:

<?php
if(@$_GET['product_id']){
  $obj=new Product;
  $name=$obj->get('id',$_GET['product_id']);
  print "产品名称:$name!<br />\n";
}
?>

这在开发中是非常有用的,我们在写程序时要记得多用print/echo语句和print_r/var_dump语句来跟踪得到的变量、对象或数组内容。

Copyright© 2011-2016 www.baike369.com All Rights Reserved