Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果错误/警告/通知未捕获,如何自动停止任何脚本并重定向到错误页面_Php_Debugging_Error Handling - Fatal编程技术网

Php 如果错误/警告/通知未捕获,如何自动停止任何脚本并重定向到错误页面

Php 如果错误/警告/通知未捕获,如何自动停止任何脚本并重定向到错误页面,php,debugging,error-handling,Php,Debugging,Error Handling,EDIT:关于上面的链接答案,它类似但不同,因为我的目标是调试错误页面中的错误。 有时很难调试意外错误,因为错误报告打印在奇怪的HTML元素中,例如隐藏的div或option元素 如果触发了任何未捕获的错误,是否有方法自动将错误对象存储在全局变量中并将脚本重定向到错误页?对于所有的错误,包括那些通常不会退出脚本的错误,比如警告和通知,是否有办法做到这一点?您可以使用。将错误转换为异常是一种很好的方法,它允许您对错误处理进行非常细粒度的控制: set_error_handler(function

EDIT:关于上面的链接答案,它类似但不同,因为我的目标是调试错误页面中的错误。


有时很难调试意外错误,因为错误报告打印在奇怪的HTML元素中,例如隐藏的div或option元素

如果触发了任何未捕获的错误,是否有方法自动将错误对象存储在全局变量中并将脚本重定向到错误页?对于所有的错误,包括那些通常不会退出脚本的错误,比如警告和通知,是否有办法做到这一点?

您可以使用。将错误转换为异常是一种很好的方法,它允许您对错误处理进行非常细粒度的控制:

set_error_handler(function ($errno, $errstr, $errfile, $errline) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
});
您可以决定抛出异常的错误和忽略异常的错误;例如,您可能希望忽略或只是记录E_通知。使用全局
try..catch
块或a,您现在可以非常轻松地决定在出现错误时要执行的操作。

您可以使用a。将错误转换为异常是一种很好的方法,它允许您对错误处理进行非常细粒度的控制:

set_error_handler(function ($errno, $errstr, $errfile, $errline) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
});

您可以决定抛出异常的错误和忽略异常的错误;例如,您可能希望忽略或只是记录E_通知。使用全局
try..catch
块或a,您现在可以非常轻松地决定在出现错误时应该做什么。

确实有一些方法可以将错误重定向到页面,记录错误,跟踪错误,等等。PHP非常灵活。好消息是,您不必自制这样的方法,框架也可用于此,但如果没有这些PHP的内置错误处理工具,您也可以生存下来,因为它们足够可用。如果配置正确,PHP将中止错误(或警告,由您决定),记录错误,甚至在插入web服务器时返回HTTP 500服务器错误代码

您可能需要正确配置PHP。它完全能够提供更好的错误处理工作流。首先,禁用错误打印,这不是行为良好的应用程序应该报告错误的方式,最坏的情况是,使用打印的错误输出帮助恶意用户闯入您的系统。你知道,你不是唯一一个查看你的网页的人,并且不是所有的用户都会对这些感到困惑,有些人会等待这些。这是您可以使用的指令之一,编辑配置php的“php.ini”文件;作为内容生成的一部分,它禁止将错误输出与PHP输出的其他内容混合:

display_errors = "0"
您还可以将其设置为“stderr”,这在使用命令行PHP调用调试脚本时是一件好事,因为输出将被发送到另一个文件通道,即所谓的标准错误

现在请注意以下“php.ini”指令:

log_errors = "1"
根据调用PHP的方式,上述文件或使用web服务器错误记录工具都会出现PHP日志错误。例如,在UNiX系统上,列出错误及其详细信息的日志文件将驻留在“/var/log/www/”中

仔细阅读有关错误处理和报告的PHP文档,可能从以下页面开始:


不要忘记阅读安装配置。我再次重申,对于公共PHP脚本,永远不会有PHP显示错误(是的,我知道您正在调试,但最近我对这一点强调得太多了)。

确实有办法将错误重定向到页面,记录错误,跟踪错误,等等。PHP非常灵活。好消息是,您不必自制这样的方法,框架也可用于此,但如果没有这些PHP的内置错误处理工具,您也可以生存下来,因为它们足够可用。如果配置正确,PHP将中止错误(或警告,由您决定),记录错误,甚至在插入web服务器时返回HTTP 500服务器错误代码

您可能需要正确配置PHP。它完全能够提供更好的错误处理工作流。首先,禁用错误打印,这不是行为良好的应用程序应该报告错误的方式,最坏的情况是,使用打印的错误输出帮助恶意用户闯入您的系统。你知道,你不是唯一一个查看你的网页的人,并且不是所有的用户都会对这些感到困惑,有些人会等待这些。这是您可以使用的指令之一,编辑配置php的“php.ini”文件;作为内容生成的一部分,它禁止将错误输出与PHP输出的其他内容混合:

display_errors = "0"
您还可以将其设置为“stderr”,这在使用命令行PHP调用调试脚本时是一件好事,因为输出将被发送到另一个文件通道,即所谓的标准错误

现在请注意以下“php.ini”指令:

log_errors = "1"
根据调用PHP的方式,上述文件或使用web服务器错误记录工具都会出现PHP日志错误。例如,在UNiX系统上,列出错误及其详细信息的日志文件将驻留在“/var/log/www/”中

仔细阅读有关错误处理和报告的PHP文档,可能从以下页面开始:


不要忘记阅读安装配置。我再次重申,对于公共PHP脚本,永远不会有PHP显示错误(是的,我知道您正在调试,但最近我对这一点强调得太多了)。

多亏了@MladenB。而deceze,我解决了我的问题。以下是我编写解决方案的方式:

在config.php文件中,包含在脚本中(最好将函数移动到个人库文件中):


感谢@MladenB。而deceze,我解决了我的问题。以下是我编写解决方案的方式:

在config.php文件中,包含在脚本中(最好将函数移动到个人库文件中):


可能重复您是否尝试阅读有关PHP异常的内容?@JamesDo