首页 > 解决方案 > 即使 file_exists() 返回 true,Laravel PHP require() 也会失败

问题描述

我在 Centos 7 上遇到了一个非常令人费解的问题:

  1. file_exists(example/file.php)返回true
  2. 然而,require(example/file.php)抛出ErrorException一个No such file or directory
  3. 以上仅发生在 Laravel 命令中
  4. 如果我要创建一个包含 2 行的独立脚本,例如test.php,使用file_exists(),后跟require(),它运行没有问题。
  5. 此外,example文件夹是指向 virtualbox 挂载文件夹的符号链接
  6. 我在 Centos 6.4 中有完全相同的设置,没有问题

为了安全起见,SELinux 已被禁用。我什至从哪里开始?谢谢你。

要求的代码:

$a = "example/file.php";
if (file_exists($a)) echo "found";  // "found" is echoed
require($a);    // throws ErrorException

更新

我花了一个晚上后发布了这个问题。经过更深入的挖掘,我意识到如果我设置一个 xdebug 断点require()并继续运行,它就可以工作。

这让我相信这是我的 CentOS Linux 版本 7.7.1908(核心)上的一个缓存问题,我在这里发布了一个问题https://github.com/Jeroen-G/laravel-packager/issues/101,注意在我的示例中,file.php这是一个新下载和提取的文件。

标签: phplaravel

解决方案


推荐阅读