检测是否在codeigniter中的php文件中的行之前发送了内容

时间:2010-10-19 16:46:59

标签: php codeigniter error-handling

我正在尝试通过记录错误并显示404页面来更改system/application/errors的错误文件的工作方式。但是,有时错误发生在页面中间,我只需要显示错误页面。

我试图检查标头是否已发送并清理输出缓冲区,但它无法正常工作。 有什么建议吗?

更新:我的问题似乎让人感到困惑,所以我会澄清一下。我的目的是在发送一部分内容后发生错误的情况下显示自定义500页,并记录发生错误的条件,以便用户不会看到丑陋的页面和黑客赢得'看到泄漏。主要问题在于在错误发生之前删除内容。

到目前为止无效的策略:

  • 使用ob_end_clean
  • 进行核对
  • $CI = & get_instance(); $CI->output->set_output('only the 500 message');
  • 向控制器添加_output($data)功能,如果找到system/application/errors/*.php文件中找到的特定模式,则仅回显500消息

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您是否在为codeigniter寻找自定义404错误页面?

http://maestric.com/doc/php/codeigniter_404

答案 1 :(得分:1)

您的意思是更改处理CI错误的默认方式吗?

http://codeigniter.com/user_guide/general/errors.html

http://www.askaboutphp.com/172/codeigniter-handling-errors.html

检查这两个指南,看看如何处理codeigniter和PHP错误。

打开错误记录到文本文件或其他内容,然后使用

关闭所有php错误(这在index.php中设置)
error_reporting(E_ERROR);
  

您应该从E_ALL更改为E_ERROR以仅显示致命运行时问题的消息。这将隐藏除停止脚本执行的所有php错误。

答案 2 :(得分:0)

在此页面上向下滚动至2008年5月27日。 http://php.net/manual/en/function.header.php

如果尚未发送标题,则会执行此操作 标题('Location:'。$ url); 否则它会使用一些JavaScript来重定向。如果禁用JavaScript,则会使用元标记。