如何在PHP中捕获require()或incluse()的错误?

我正在用PHP5编写一个脚本,需要某些文件的代码。当文件不可用于包含时,首先会发出警告,然后引发致命错误。我想打印自己的错误消息,当无法包含代码时。如果请求不起作用,是否可以执行最后一个命令?以下不起作用:

require('fileERROR.php5') or die("Unable to load configuration file.");

仅使用抑制所有错误消息会给出一个白屏,而不使用error_reporting会给出PHP错误,我不想显示。error_reporting(0)


答案 1

您可以通过将set_error_handlerErrorException 结合使用来实现此目的。

该页面的示例如下:ErrorException

<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

/* Trigger exception */
strpos();
?>

一旦您将错误作为异常处理,您可以执行如下操作:

<?php
try {
    include 'fileERROR.php5';
} catch (ErrorException $ex) {
    echo "Unable to load configuration file.";
    // you can exit or die here if you prefer - also you can log your error,
    // or any other steps you wish to take
}
?>

答案 2

我只使用'file_exists()':

if (file_exists("must_have.php")) {
    require "must_have.php";
}
else {
    echo "Please try back in five minutes...\n";
}

推荐