在应用程序中,我调用了require_once $ file,其中我已验证$ file变量表示绝对路径,该文件存在且可读。 PHP 7.3给了我一个可怕的消息:“致命错误:require_once():无法打开所需消息”。
当我更改代码以使用“ require”而不是“ require_once”时,我会走得更远,直到下一个“ require_once”语句为止。
我正在ubuntu 18.04上运行PHP 7.2.19。
此特定代码嵌入在已经包含并且在不同时间需要许多不同文件的应用程序中。
我已经检查了明显的事情,例如多次包含特定文件(不是)...并出于测试目的而包含另一个文件,并且该文件始终会失败。我已经仔细检查了权限,等等。
$file = "$destdir/lib/include.php";
$file = realpath($file);
if( is_file($file) && is_readable($file) ) {
require_once $file; // fails
// require $file; // works, but fails when require_once is called within this file.
// include $file; // works, but fails when require_once is called within this file
// include_once $file; // fails
}
I expected of course, that the file is required.