我在尝试加载网页时遇到了此错误。
错误消息上显示的路径是,
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没有找到您发布的正确路径。
如果您需要更多信息,请评论,我将编辑此答案。此外,有关您的错误的更多信息将不胜感激,以便我可以满足您的更多需求。
希望这对你有所帮助:)