16

I was trying to go live with a laravel project i developped a year back in school and i ran into some issue. After uploading the whole project on my hosting service's server, i got these errors on my browser as well as on my 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 Stack trace: #0 /home/clients/ffa41f94063541f86a0fe6602a73caa1/myforms/vendor/laravel/framework/src/Illuminate/Container/Container.php(779): ReflectionClass->__construct('App\Http\Kernel') #1 /home/clients/ffa41f94063541f86a0fe6602a73caa1/myforms/vendor/laravel/framework/src/Illuminate/Container/Container.php(659): Illuminate\Container\Container->build('App\Http\Kernel', Array) #2 /home/clients/ffa41f94063541f86a0fe6602a73caa1/myforms/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(644): Illuminate\Container\Container->make('App\Http\Kernel', Array) #3 /home/clients/ffa41f94063541f86a0fe6602a73caa1/myforms/vendor/laravel/framework/src/Illuminate/Container/Container.php(229): Illuminate\Foundation\Application->make('App\Http\Kernel', Array) #4 /home/clients/ffa41f94063 in /home/clients/ffa41f94063541f86a0fe6602a73caa1/myforms/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 779

I think it could be related to my namespace configuration, because i haven't all understood yet.

Here is my composer.json file :

{
 "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"
 }
}

What I have already done :

  • Delete /vendor and make a new install with composer install
  • composer dump-autoload
  • composer update btw, I get the error when I insert the composer update

Please inform me if i should post another file that could be useful.

Thanks in advance for your help.

NicoSalvadore
  • 163
  • 1
  • 2
  • 7

5 Answers5

26

In composer.json change:

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

to:

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

On the server, in your source directory, run composer update then composer dump-autoload

PSR-4 in Laravel looks for namespaces relative to the root of the project

Roger Creasy
  • 1,419
  • 2
  • 19
  • 35
  • 2
    After changing my laravel application Name using the command line (php artisan app:name "my name") to test if things goes fine. the application collapsed and destroyed. and thanks to the 'git ', I discarded the changes. but i did face the same problem. the CL (composer dump-autoload) saved my day. Thanks. – codeNeverDie Dec 14 '18 at 22:01
2

Check if console/kernel.php is inside of app-folder, if not it might be inside of your laravelApp.

If so, move console/kernel.php to app-folder.

Zombaya
  • 2,230
  • 23
  • 30
odionk
  • 79
  • 2
  • 6
1

In my case composer.json was missing propper bracket closing "{ }" and line with "psr-4" was in wrong json segment.

  1. Check composer.json for proper align of "psr-4" it should be child of "autoload" section.
  2. Remove vendor
  3. composer install

OK

Lazirro
  • 51
  • 2
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"
 }
}
  • Can you add a comment about what you've changed? – Tom Apr 13 '20 at 21:40
  • 1
    While this code may solve the question, [including an explanation](https://meta.stackexchange.com/q/114762) of how and why this solves the problem would really help to improve the quality of your post, and probably result in more up-votes. Remember that you are answering the question for readers in the future, not just the person asking now. Please [edit] your answer to add explanations and give an indication of what limitations and assumptions apply. – Brian61354270 Apr 14 '20 at 00:36
0

With the help of the other answers here, I realised I'd just missed a change when manually updating from Laravel 5.5 to 5.7

In composer.json, I'd missed this from the autoload block:

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

If you're using version control, run composer update on your dev machine to update composer.lock. Then on your production server, you should only need to run composer install

Joe Vector
  • 41
  • 2