PHP捕获失败的包含

11 php exception try-catch include

我正在尝试包含一个文件,并在文件不存在/无法打开时捕获它.我原以为一个简单的try/catch语句就可以了,但PHP似乎完全忽略了它,并且出错了.

有任何想法吗?我知道在stackoverflow上还有其他类似的问题,我已经看过它们了,但是它们似乎没有一个正确的,有效的答案.

Tim*_*per 28

您可以检查include的返回值以查看它是否失败:

if((@include $filename) === false)
{
    // handle error
}
Run Code Online (Sandbox Code Playgroud)

您会注意到我包含了错误抑制操作符(@)以隐藏显示的标准错误消息.

  • 我认为使用@,错误控制操作符非常好,如果你处理错误.它只是确保如果配置已打开此类警告,则不会输出令人讨厌的包含失败错误. (11认同)
  • 使用@是一个非常脏的解决方案 (2认同)

Sim*_*one 5

由于失败时include()返回false,只需检查它是否返回true,然后执行类似的操作die()或显示错误。

if (!include('page.php'))
   die('Error.');
Run Code Online (Sandbox Code Playgroud)

  • 如果你要“死”,你也可以使用 [require](http://php.net/manual/en/function.require.php) 不过。 (5认同)