致命错误 Laravel:查看我的网站时未捕获 ReflectionException

Posted

技术标签:

【中文标题】致命错误 Laravel:查看我的网站时未捕获 ReflectionException【英文标题】:Fatal Error Laravel: Uncaught ReflectionException when i view my Site 【发布时间】:2016-08-19 18:05:47 【问题描述】:

查看我的网站时出现以下错误。

我的错误:

致命错误:未捕获的 ReflectionException:类日志不存在于 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Container/Container.php:741> 堆栈跟踪:#0 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Container/Container.php(741): ReflectionClass->__construct('log') #1 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build('log', Array) #2 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('log', Array) #3 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Container/Container.php(842): Illuminate\Foundation\Application->make('log') #4 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Container/Container.php(805): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter)) > #5 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Container/Container.php(774): 我在 /home/vagrant/Code/in10km/vendor/laravel/framework/src/Illuminate/Container/Container.php 在第 741 行

我的Composer.json文件是这样的


    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": 
        "php": ">=5.5.9",
        "laravel/framework": "5.1.*",
        "doctrine/dbal": "v2.4.2",
        "swiftmailer/swiftmailer": "^5.4",
        "guzzlehttp/guzzle": "~5.3|~6.0",       
        "chrisbjr/api-guard": "^2.3",
        "serverfireteam/panel": "1.3.*",
        "laravel/socialite": "^2.0"

    ,
    "require-dev": 
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
    ,
    "autoload": 
        "files": [
            "app/Http/helpers.php",
            "app/Support/helpers.php"
        ],
        "classmap": [
            "database"
        ],
        "psr-4": 
            "App\\": "app/"
        
    ,
    "autoload-dev": 
        "classmap": [
            "tests/TestCase.php"
        ]
    ,
    "scripts": 
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "pre-update-cmd": [
            "php artisan clear-compiled"
        ],
        "post-update-cmd": [
            "php artisan optimize"
        ],
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    ,
    "config": 
        "preferred-install": "dist"
    

任何人都可以帮助我如何摆脱此错误并成功查看我的网站。

【问题讨论】:

【参考方案1】:

问题可能源于您的供应商文件夹(包括所有已安装的供应商软件包)中尚未(尚未)下载的软件包 在这种情况下,composer dump-autoload -o 无法解决您的问题。

检查你 composer.jsoncomposer.lock

我从 GIT 存储库将 main 添加到我的分支中。

composer.jsoncomposer.lock 不匹配!

解决方案是从 main 中恢复 composer.jsoncomposer.lock 并手动从我的分支中读取所有更改。

只是为了确保我也删除了我的 vendor 文件夹。

运行composer install(重新)安装存储在composer.lock中的所有包并添加所有(较新的)尚未安装的包。

请注意,运行 composer update 可能会解决问题,但也会更新可能未更新的软件包。

【讨论】:

【参考方案2】:

我找到了解决方案,在我的路线中我没有准确地调用控制器的名称

例子:

Route::get('/endpoint', 'Namebadcontroller@function');

// Correct name of route
Route::get('/endpoint', 'NameBadController@function');

并运行以下命令:

作曲家转储-自动加载-o

php artisan clear-compiled php工匠优化

【讨论】:

【参考方案3】:

删除供应商文件,然后运行composer update

【讨论】:

【参考方案4】:

删除bootstrap/cache/中的所有文件然后运行:

composer dump-autoload -o

【讨论】:

【参考方案5】:

尝试命令composer dump-autoload -o

我用它来解决这个问题:'Uncaught ReflectionException'。

祝你好运!

【讨论】:

哇。感谢您将其标准化。我是一名初级程序员【参考方案6】:

我遇到了类似的问题。我发现要真正深入研究这个问题,您需要修改 Illuminate/Container/Container.php 文件,如倒数第三个 here 建议的那样。

<?php

namespace 
    use Monolog\Logger as Monolog;
    class log extends Illuminate\Log\Writer 
        function __construct()
        
            $this->monolog = new Monolog("local");
        
    


namespace Illuminate\Container 

    use Closure;
    use ArrayAccess;
    use ReflectionClass;
    use ReflectionMethod;
    use ReflectionFunction;
    use ReflectionParameter;
    use InvalidArgumentException;
    use Illuminate\Contracts\Container\Container as ContainerContract;
    use Illuminate\Contracts\Container\BindingResolutionException as BindingResolutionContractException;


    class Container implements ArrayAccess, ContainerContract
    

按照代码建议修改它,并在底部添加一个额外的右括号。这将允许它显示原本无法显示的错误,从而能够解决您的问题!

【讨论】:

以上是关于致命错误 Laravel:查看我的网站时未捕获 ReflectionException的主要内容,如果未能解决你的问题,请参考以下文章

迁移时未找到 Laravel 致命错误类

如何修复 PHPUnit 中的“PHP 致命错误:未捕获的 TypeError:getTest() 参数”错误

Laravel - 致命错误:未捕获的错误:找不到类'Auth'

将 laravel 5.8 升级到 6:致命错误:未捕获的 RuntimeException:尚未设置外观根

如何解决 PHP 致命错误:未捕获的错误:在 laravel 版本更新时调用未定义的方法 Illuminate\Container\Container::basePath() 错误?

未捕获的 ReferenceError:使用 laravel-mix webpack 时未定义 Vue