致命错误 Laravel:未捕获的反射异常,当我查看我的网站时


Fatal Error Laravel: Uncaught ReflectionException when i view my Site

我在查看我的网站时遇到以下错误。

我的错误:

致命错误:未捕获的反射异常:类日志不存在 /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行

我的作曲家.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"
    }
}

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

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

composer dump-autoload -o

我也有类似的问题。我发现要真正深入研究这个问题,您需要修改 Illuminate/Container/Container.php 文件,如顶部第三个建议的那样。

<?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
    {

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

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

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

例:

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

并运行以下命令:

作曲家转储自动加载 -o

PHP 工匠清晰编译PHP 工匠优化

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

检查你composer.jsoncomposer.lock

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

composer.jsoncomposer.lock不匹配!

解决方案是从main恢复composer.jsoncomposer.lock,并手动从我的分支重新添加所有更改。

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

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

请注意,运行 composer update 可能会解决此问题,但 alse 会更新可能无法更新的包。

尝试命令composer dump-autoload -o

我用它来克服这个问题:"未捕获的反射异常"。

祝你好运!