【问题标题】:Cakephp 3.9 Application Class not found找不到 Cakephp 3.9 应用程序类
【发布时间】:2020-07-06 20:02:31
【问题描述】:

从 Cake 3.8 更新到最新的 3.9 后,我的网站不再加载:

( ! ) 致命错误:未捕获的错误:第 31 行的 webroot\index.php 中找不到类“应用程序” (!) 错误:在第 31 行的 webroot\index.php 中找不到类“应用程序”。

我的 src/App;lication.php;

require dirname(__DIR__) . '/vendor/autoload.php';

use App\Application;
use Cake\Http\Server;
    
// Bind your application to the server.
$server = new Server(new Application(dirname(__DIR__) . '/config'));
    
// Run the request/response through the application
// and emit the response.
$server->emit($server->run());

第 31 行是:

new Server(new Application(dirname(DIR) . '/config'));

我已尝试对此进行调试,但错误来自“新应用程序”。据我所知,Application 类的引用方式与其他地方一样,例如在 cake.php 中。

我查看了这本书的 3.9 版发行说明。似乎还有其他一些关于 SO 的帖子报告了与早期 3.x 版本类似的问题,但没有一个给出正确答案。

任何建议,因为我完全不知所措。

【问题讨论】:

  • 您有src/Application.php 文件吗?这就是应该找到这个类的地方。
  • @GregSchmidt 我同意,就像我在运行 composer updare 之前所做的那样
  • 如果它在作曲家更新之前有效,但在更新之后无效,那么可能是自动加载器没有正确转储。尝试减少它(composer dump-autoload),最好是在您的目标环境中,并检查它是否正确生成(即您的类名/命名空间存在),以及生成的文件(vendor/autoload.phpvendor/composer/autoload_*.php)是否可以通过以下方式访问PHP.
  • 运行 composer dump-autoload: 生成的自动加载文件包含 509 个类...

标签: cakephp-3.0


【解决方案1】:

我通过 composer-update 创建了一个新项目并根据需要安装了所有包。然后我将新项目的供应商文件夹复制到旧的损坏项目中进行修复。问题似乎在供应商文件夹中 - 问题是什么仍然是个谜,我仍然不清楚问题是如何引入的。

【讨论】:

    【解决方案2】:

    composer.json 文件需要这个部分

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    

    告诉 Composer 将 App 命名空间(连同其他命名空间)加载到 vendor/composer/autoload_psr4.php。

    然后运行 ​​composer dump-autoload 或 composer update。

    我从 2.10.24 升级到 3.9 时遇到了同样的问题。

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 2015-07-04
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2019-05-06
      • 2014-11-04
      • 1970-01-01
      相关资源
      最近更新 更多