使用PHP的错误处理(转) 没话好说了。。都到这份上了。。出了错没找我。。找它就得了。

错误|错误处理

   使用PHP的错误处理

  在web 上所有常见的错误之一就是无效的链接。一旦从其它站点上出现了无效的链接,你会重新安排你
的站点。人们会将他们喜欢的站点存成书签,如果在三个月后再次访问时,仅仅发现的是'404 Not Fount '
时,将不会给他们任务帮助,告诉他们如何从你的站点去查找原始的信息。让我们解决这个问题,或者至少
给你的用户一个友好的帮助,一旦他们遇到'a 404' 错误时,能够得到一些痕迹。你可以创建普通的页面来
报告在处理你的页面时所遇到的所有的错误。

  PHP 与Apache一起可以很自由地让你创建自已的出错页面,但是需要重新进行配置,并且要编少量的代
码。先让我们学习配置部分。

  Apache的ErrorDocument指示用来指出在出现错误时Apache应重定向到哪一个文档(或URI)。它允许你
为每一个你的用户可能遇到的错误代码指定一个资源。通过在你的服务器配置中增加一个ErrorDocument 404  
/error.php指示。这个将在用户访问一个不存在的页面时,重定向到'error.php'中,下面我们就会写出
'error.php'页面。不要忘了重新启动Apache以使改动生效。

  接着,我们写出一个简单的error.php:

你所请求的文件 (<?=$REDIRECT_URL?>) 在这个服务器上不存在。
请查找你想要的文件从 <A HREF="/">前页</A>。

  现在试着读取一个在你服务器上不存在的页面,怎么样,你可以看到error.php了,它有着一个良好和
友好的消息,并且还有一个到前页的链接。

  让我们把它扩展一下。正如你所见,我在error.php中使用了REDIRECT_URL变量。这个变量是Apache在
执行了一个ErrorDocument指示时所设置的,并且给出了一种可能来找到原始的资源。在这种情况下,Apache
还设置了一些别的变量,所有的变量可以在这里找到。使用这些变量可能创建一个很好的出错页面,用于给
用户一个不错与友好的出错页面,而代替Apache给出的缺省页面。

从PHP页面中输出错误
  从一个PHP页面输出错误与模拟Apache对ErrorDocument指示所做的很象,你只要简单地将用户重定向,
通过使用query-string变量,而Apache则通常是设置在环境变量里面。这样就可以使用同一个出错页面来处
理各种错误。下面是一个例子:  

--------------------------------------------------------------------------------
<?php

function throw_error($message) {
$error_page = "/err/error.php";

$error_url = $error_page;
$error_url .= "?REDIRECT_ERROR_NOTES=$message";
$error_url .= "&REDIRECT_URL=" . $GLOBALS["PHP_SELF"];
$error_url .= "&REDIRECT_REQUEST_METHOD=$REQUEST_METHOD";
$error_url .= "&REDIRECT_STATUS=501";
Header("Status: 501");
Header("Location: $error_url");
exit;
}

ob_start();  
// 使用输出缓冲以便在这页中的任何地方输出错误

if(!condition) {
throw_error("the condition failed");
}

ob_end_flush();  
// 页面处理完毕,刷新输出缓冲

?>--------------------------------------------------------------------------------
  使用PHP4的输出缓冲特性对生成一般的出错报告功能也会有帮助。但是在你确认整个出错页面处理完毕
时,不要忘记刷新缓冲区,你可以在你的代码中的任可地方通过Header调用来进行重定向。  

  读者可以自行设计,实现自已的出错页面来适应他/她的站点。不要忘了,你可以包含一个带email的提
交表单在出错页面中,这样用户可以反馈给你一些意见。

时间: 2024-09-15 14:45:37

使用PHP的错误处理(转) 没话好说了。。都到这份上了。。出了错没找我。。找它就得了。的相关文章

ftp服务器上传文件-ftp服务器上传没错误,,但ftp服务器相应目录下没有找到上传文件

问题描述 ftp服务器上传没错误,,但ftp服务器相应目录下没有找到上传文件 public void remoteUpload()throws Exception{ FTPClient f = new FTPClient(); f.connect("***.***.***.***", 21); f.login("intf","intf"); System.out.println(f.isConnected()); f.setControlEnco

ftp服务器上传没错误,,但ftp服务器相应目录下没有找到上传文件

问题描述 ftp服务器上传没错误,,但ftp服务器相应目录下没有找到上传文件 public void remoteUpload()throws Exception{ FTPClient f = new FTPClient(); f.connect("***.***.***.***", 21); f.login("intf","intf"); System.out.println(f.isConnected()); f.setControlEnco

为什么感觉自己语句上没啥问题,但是就是连不上数据库

问题描述 为什么感觉自己语句上没啥问题,但是就是连不上数据库 连不上数据库,"System.Data.OracleClient.OracleException"类型的未经处理的异常出现在 System.Data.OracleClient.dll 中. 其他信息: ORA-12154: TNS:could not resolve the connect identifier specified 代码如下,求解决啊: Imports System.Data.OracleClient Mod

我有三个这样的头文件,刚开始只有一个头文件的时候打开文件没问题,现在都打开失败怎么办?

问题描述 我有三个这样的头文件,刚开始只有一个头文件的时候打开文件没问题,现在都打开失败怎么办? #pragma oncevoid Add(){ Employee a[MAXK]t; fstream iofile(""emp.txt"" ios::in|ios::out); if (!iofile) { cerr << ""open error"" << endl; system(""

云服务器-各位大哥,我在本地安装的php集成环境没问题,但是安装到云主机上就无法显示!!

问题描述 各位大哥,我在本地安装的php集成环境没问题,但是安装到云主机上就无法显示!! 各位大哥,我在本地安装的php集成环境没问题,但是安装到云主机上就无法显示!! 请问,各位大哥,为什么呢?我用的是阿里云的云主机,win2003,和win2008都用过,就是不行,我在云服务器上安装别的php源码,就可以正常使用,但是现在安装的这套源码,在本地 能用,到了云主机就不行了了,跪求各位大哥解答一下 我用wampserver,,phpstudy,APPserver都用了,在云主机上总是有 问题,环

ckfinder与ckeditor配置好后,在本地上是没问题,但到了服务器上,上传浏览器就白色没反映

问题描述 ckfinder与ckeditor配置好后,在本地上是没问题,但到了服务器上,上传浏览器就白色没反映,不是404错误(我反而想它报错,起码我知道它错在哪里)本地上服务器上 解决方案

用eclipse编程报错没javax.cry这个包,请问如何解决

问题描述 用eclipse编程报错没javax.cry这个包,请问如何解决 用eclipse编程报错没javax.cry这个包,请问如何解决 解决方案 没这个包,就在eclipse里面新建一个就是了,关键是包里面的类需要定义. 解决方案二: 在JRE/lib/ext/sunjce_provider.jar和javax/crypto里面找找

登录事件-他说 = 附近有语法错误 找来找去不知道=有什么错误

问题描述 他说 = 附近有语法错误 找来找去不知道=有什么错误 //登录事件处理方法 private void button1_Click(object sender, EventArgs e) { try { string sql = string.Format("select uname,password,userrole from tb_userinfo where uname={0}", this.tb_name.Text.Trim()); DataSet ds = sqlHp

新闻内容是怎么排版的,事先在FreeTextBox中排版上传到数据库中没吗? 通常是怎么做的? 问题:页面独处存文字后 如何排版

问题描述 http://view.news.qq.com/a/20071016/000047.htm这种新闻内容是怎么排版的新闻内容是怎么排版的,事先在FreeTextBox中排版上传到数据库中没吗? 通常是怎么做的? 问题:页面独处存文字后 如何排版-------------------------------------------- 解决方案 解决方案二:主题部分用文本编辑器事先编辑好的HTML代码,页面只是显示HTML代码而已.