执行php artisan optimize时出现config类不存在的Laravel致命错误
执行
php artisan optimize时出现"Class 'config' does not exist"错误的解决方法 问题背景
备份操作占满服务器存储,删除备份压缩包后从备份文件替换了config和vendor文件夹,执行php artisan optimize时触发以下致命错误:
[root@cel html1 php artisan optimize PHP Fatal error: Uncaught ReflectionException: Class "config" does not exist in /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php:877 Stack trace: #0 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(877): ReflectionException->__construct() #1 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(758): Illuminate\Container\Container->build() #2 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(851): Illuminate\Container\Container->resolve() #3 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(694): Illuminate\Foundation\Application->resolve() #4 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(836): Illuminate\Container\Container->make() #5 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1423): Illuminate\Foundation\Application->make() #6 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(472): Illuminate\Container\Container->offsetGet() #7 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(523): Illuminate\Log\LogManager->getDefaultDriver() #8 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(111): Illuminate\Log\LogManager->parseDriver() #9 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(583): Illuminate\Log\LogManager->driver() #10 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(252): Illuminate\Log\LogManager->error() #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(366): Illuminate\Foundation\Exceptions\Handler->report() #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(131): Illuminate\Foundation\Console\Kernel->reportException() #13 /var/www/html/artisan(37): Illuminate\Foundation\Console\Kernel->handle() #14 (main) Next Illuminate\Contracts\Container\BindingResolutionException: Target class (config) does not exist. in /var/www/html/vendor/laravel/framework/src/Illuminate/Container/ Stack trace: #0 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(758): Illuminate\Container\Container->build() #1 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(851): Illuminate\Container\Container->resolve() #2 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(694): Illuminate\Foundation\Application->resolve() #3 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(836): Illuminate\Container\Container->make() #4 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1423): Illuminate\Foundation\Application->make() /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(472): Illuminate\Container\Container->offsetGet() #5 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(523): Illuminate\Log\LogManager->getDefaultDriver() #6 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(111): Illuminate\Log\LogManager->parseDriver() #7 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(583): Illuminate\Log\LogManager->driver() #8 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(252): Illuminate\Log\LogManager->error() #9 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(366): Illuminate\Foundation\Exceptions\Handler->report() #10 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(131): Illuminate\Foundation\Console\Kernel->reportException() #11 /var/www/html/artisan(37): Illuminate\Foundation\Console\Kernel->handle() #12 (main) thrown in /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 879 [root@letl html]
原因分析
替换config和vendor文件夹后,Laravel的旧缓存文件(包括配置缓存、类加载缓存)与新文件不匹配,导致容器无法正确解析config服务,触发反射异常。
解决步骤
清除现有缓存:如果
artisan命令能执行,运行以下命令:php artisan cache:clear php artisan config:clear若
artisan无法运行,手动删除缓存目录文件:rm -rf bootstrap/cache/*重新生成类加载缓存:
composer dump-autoload -o重新执行优化命令:
php artisan optimize检查目录权限:确保
storage和bootstrap/cache目录拥有正确的读写权限,执行:chown -R www-data:www-data storage bootstrap/cache chmod -R 775 storage bootstrap/cache
内容的提问来源于stack exchange,提问作者Satish Kumar
相关产品推荐
相关产品推荐

