cakePHP 警告:include(/var/www/html/.../lib/Cake/Error/ErrorHan


cakePHP Warning: include(/var/www/html/....../lib/Cake/Error/ErrorHandler.php): failed to open stream Error

我在尝试加载网页时遇到了此错误。

错误消息上显示的路径是,

PHP 警告: include(/var/www/html/test.com/www/products/abc/lib/Cake/Error/ErrorHandler.php): 无法打开流:

它无法找到 Cake 库目录,因为路径应该 是 "/var/www/html/test.com/products/abc/lib/Cake/..."相反。

知道我该如何解决这个问题吗?

错误将我指向核心/应用程序.php文件的第 540 行,即,

if ($file = self::_mapped($className, $plugin)) {
        return include $file;   <<---- LINE 540
}
$paths = self::path($package, $plugin);

谢谢!

你的 CakePHP 正在尝试包含一个文件,就像你键入一样

include '/var/www/html/test.com/www/products/abc/lib/Cake/Error/ErrorHandler.php';  

正如 PHP:include-Manual 中提到的:

如果 include 构造找不到文件,它将发出警告

有趣的是,您的 CakePHP 误解了您的根目录,所以一个想法是您使用依赖项管理器(例如 Composer)进行安装,并将您的项目移动到最初位于父目录 /var/www/html/test.com/ 下时/var/www/html/test.com/www/

为了确保安全,请检查 Cake 定义其 ROOT 目录的文件,即根index.php文件。如果你往里面看,你会看到这样的东西:

define('ROOT', dirname(__FILE__)); // <-- ROOT GLOBAL VARIABLE DEFINITION
define('WEBROOT_DIR', 'webroot');
define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS);  

它可以随着框架的版本而变化,但它应该非常相似。

我们要查找的行是第一行,这意味着 CakePHP 的ROOT全局变量设置在index.php所在的位置。

我的理论是,您已经移动,删除或修改了ROOT或其他占用全局变量,而CakePHP没有找到您发布的正确路径。

如果您需要更多信息,请评论,我将编辑此答案。此外,有关您的错误的更多信息将不胜感激,以便我可以满足您的更多需求。
希望这对你有所帮助:)