Laravel错误 'ReflectionException' - 'Class App\Http\Kernel不存在'

16
尝试将我在学校开发的Laravel项目部署到托管服务的服务器上时,遇到了问题。在上传整个项目后,我在浏览器和SSH shell上都看到了以下错误: "Fatal error: Uncaught exception 'ReflectionException' with message 'Class App\Http\Kernel does not exist' in /home/clients/ffa41f94063541f86a0fe6602a73caa1/myforms/vendor/laravel/framework/src/Illuminate/Container/Container.php:779" 我认为这可能与我的命名空间配置有关,因为我还没有完全理解它。 下面是我的composer.json文件:

{
 "name": "laravel/laravel",
 "description": "The Laravel Framework.",
 "keywords": ["framework", "laravel"],
 "license": "MIT",
 "type": "project",
 "require": {
  "laravel/framework": "5.0.*",
  "illuminate/html": "5.*",
  "barryvdh/laravel-dompdf": "0.5.*",
  "guzzlehttp/guzzle": "~4.0"

 },
 "require-dev": {
  "phpunit/phpunit": "~4.0",
  "phpspec/phpspec": "~2.1"
 },
 "autoload": {
  "classmap": [
   "database"
  ],
  "psr-4": {
   "App\\": "myforms/app/"
  }
 },
 "autoload-dev": {
  "classmap": [
   "tests/TestCase.php"
  ]
 },
 "scripts": {
  "post-install-cmd": [
   "php artisan clear-compiled",
   "php artisan optimize"
  ],
  "post-update-cmd": [
   "php artisan clear-compiled",
   "php artisan optimize"
  ],
  "post-create-project-cmd": [
   "php -r \"copy('.env.example', '.env');\"",
   "php artisan key:generate"
  ]
 },
 "config": {
  "preferred-install": "dist"
 }
}

我已经完成的工作:

  • 删除 /vendor 目录并使用 composer install 进行新的安装
  • composer dump-autoload
  • composer update,顺便说一句,当我执行 composer update 时遇到了错误

如果我需要发布其他有用的文件,请告诉我。

感谢您提前的帮助。


composer update 会生成什么错误? - scottevans93
请查看此链接:https://dev59.com/2Yrda4cB1Zd3GeqPRteI,并运行“composer dump-autoload”。 - Parithiban
@scottevans93 它生成了我之前发布的那个。但它添加了一行: Script php artisan clear-compiled handling the post-update-cmd event returned with error code 255 - NicoSalvadore
@pari,谢谢分享链接。他说的“检查bootstrap/app.php中的绑定是否正确”是什么意思? - NicoSalvadore
5个回答

29

在 composer.json 中进行修改:

 "psr-4": {
        "App\\": "myforms/app/"
    } 

致:

 "psr-4": {
        "App\\": "app/"
    }
在服务器上,在您的源代码目录中运行composer update,然后运行composer dump-autoload
在Laravel中,PSR-4会相对于项目根目录来查找命名空间。

2
在使用命令行(php artisan app:name "my name")更改我的Laravel应用程序名称后,为了测试是否正常,应用程序崩溃并被破坏。幸好有“git”,我放弃了这些更改。但是我确实遇到了同样的问题。CL(composer dump-autoload)拯救了我的一天。谢谢。 - codeNeverDie

2

检查 console/kernel.php 是否在 app 文件夹中,如果不在,则可能在您的 laravelApp 中。

如果是这样,请将 console/kernel.php 移动到 app 文件夹中。


1
我从谷歌上找到了这个问题,然后看到了4秒前的答案。 - HosseyNJF

1
在我的情况下,composer.json 缺少正确的括号闭合 "{ }",并且包含 "psr-4" 的行位于错误的 json 段中。
  1. 检查 composer.json 中的 "psr-4" 是否正确对齐,它应该是 "autoload" 部分的子级。
  2. 删除 vendor 文件夹。
  3. 运行 composer install 命令。

好的。


0

{
 "name": "laravel/laravel",
 "description": "The Laravel Framework.",
 "keywords": ["framework", "laravel"],
 "license": "MIT",
 "type": "project",
 "require": {
  "laravel/framework": "5.0.*",
  "illuminate/html": "5.*",
  "barryvdh/laravel-dompdf": "0.5.*",
  "guzzlehttp/guzzle": "~4.0"

 },
 "require-dev": {
  "phpunit/phpunit": "~4.0",
  "phpspec/phpspec": "~2.1"
 },
 "autoload": {
  "classmap": [
   "database"
  ],
  "psr-4": {
   "App\\": "myforms/app/"
  }
 },
 "autoload-dev": {
  "classmap": [
   "tests/TestCase.php"
  ]
 },
 "scripts": {
  "post-install-cmd": [
   "php artisan clear-compiled",
   "php artisan optimize"
  ],
  "post-update-cmd": [
   "php artisan clear-compiled",
   "php artisan optimize"
  ],
  "post-create-project-cmd": [
   "php -r \"copy('.env.example', '.env');\"",
   "php artisan key:generate"
  ]
 },
 "config": {
  "preferred-install": "dist"
 }
}


你能否添加一条关于你所做更改的注释? - Tom
1
虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题,将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Brian61354270

0

在这里得到其他答案的帮助后,我意识到在手动更新从Laravel 5.5到5.7时我错过了一个更改。

在composer.json中,我错过了autoload块中的这个:

"autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    ...
},

如果您正在使用版本控制,请在开发机器上运行composer update以更新composer.lock。然后在生产服务器上,您只需要运行composer install即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接