【问题标题】:How to intentionally cause a fatal error in PHP script?如何故意在 PHP 脚本中造成致命错误?
【发布时间】:2015-09-25 21:14:44
【问题描述】:

我希望脚本在崩溃时停止执行,同时不会耗尽内存或导致服务器崩溃。

知道怎么做吗?

【问题讨论】:

  • 使用 php die();它将停止执行
  • 错误,我希望它死于致命错误。我想看看输出如何受到致命错误的影响,如果它死了,我想会用 'die' 调用许多其他方法。
  • 奇怪的要求。为什么需要这个?
  • 我希望我的脚本一次运行的实例不超过一个,并且我锁定了一个文件:flock($fplock, LOCK_EX | LOCK_NB) 以检查并发性。我想看看发生致命错误时文件是否会被解锁。 @Tushar

标签: php crash


【解决方案1】:

我相信这就是您要找的:

trigger_error("Oops!", E_USER_ERROR);

文档:http://php.net/manual/en/function.trigger-error.php

E_USER_ERROR 几乎等于 E_ERROR,即 fatal runtime error

【讨论】:

  • 使用 set_error_handler() 不会致命。请参阅下面的回复。
【解决方案2】:

有点晚了,但这是必然的自然致命错误:

调用未定义的函数,例如:

noSuchFunction();

或者,如果您希望仅在“测试”模式下执行此操作,则将其放入 eval 中

if($isTestMode==1){
  eval("noSuchFunction();");
}

注意:使用 trigger_error() 函数的问题是,如果您使用 set_error_handler() 它不再是致命的 - 您的错误处理程序将决定如何处理它。

【讨论】:

    猜你喜欢
    • 2014-12-12
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多