我最近在部署应用程序时遇到了一个错误。它在include路径中的路径上使用“is_readable”,但受“open_basedir”限制。这给了我一个致命的错误。
在实际包含一个文件之前,我是否可以使用另一个函数来查看该文件是否可包含?
编辑:这是可行的,但是我如何检测错误是因为include失败还是因为include文件中的某个错误?
try {
include 'somefile.php';
$included = true;
} catch (Exception $e) {
// Code to run if it didn't work out
$included = false;
}
最佳答案
你可以试试这个;)
<?php
function exceptions_error_handler($severity, $message, $filename, $lineno) {
throw new ErrorException($message, 0, $severity, $filename, $lineno);
}
set_error_handler('exceptions_error_handler');
try {
include 'somefile.php';
$included = true;
} catch (Exception $e) {
// Code to run if it didn't work out
$included = false;
}
echo 'File has ' . ($included ? '' : 'not ') . 'been included.';
?>
如果不起作用,$include将设置为true,然后在捕获中设置为false。如果真的成功了,$包括在内仍然是真的。