我最近在部署应用程序时遇到了一个错误。它在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。如果真的成功了,$包括在内仍然是真的。

10-04 14:43