簡體   English   中英

如何使用消息“類日志不存在”修復未捕獲的異常“ Re​​flectionException”?

[英]How to fix Uncaught exception 'ReflectionException' with message 'Class log does not exist'?

我在Windows Server 20012 R2上遇到作曲家的問題。 我正在嘗試部署網站,每次運行composer installcomposer update我都會得到以下信息:

$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postInstall
> php artisan optimize
Script php artisan optimize handling the post-install-cmd event returned with an error


  [RuntimeException]
  Error Output:


install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--ignore-platform-reqs] [--] [<packages>]...

當我檢查php錯誤日志時 ,發現以下內容:

[17-Jul-2016 08:04:58 UTC] PHP Fatal error:  Uncaught exception 'ReflectionException' with message 'Class log does not exist' in C:\PATH_TO_PROJECT\vendor\laravel\framework\src\Illuminate\Container\Container.php:734
Stack trace:
#0 C:\PATH_TO_PROJECT\vendor\laravel\framework\src\Illuminate\Container\Container.php(734): ReflectionClass->__construct('log')
#1 C:\PATH_TO_PROJECT\vendor\laravel\framework\src\Illuminate\Container\Container.php(629): Illuminate\Container\Container->build('log', Array)
#2 C:\PATH_TO_PROJECT\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(697): Illuminate\Container\Container->make('log', Array)
#3 C:\PATH_TO_PROJECT\vendor\laravel\framework\src\Illuminate\Container\Container.php(849): Illuminate\Foundation\Application->make('Psr\\Log\\LoggerI...')
#4 C:\PATH_TO_PROJECT\vendor\laravel\framework\src\Illuminate\ in C:\PATH_TO_PROJECT\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 734

當我在Ubuntu服務器上嘗試相同的項目時,一切正常! 我嘗試了所有可以在互聯網上找到的答案,但沒有任何幫助。 任何建議如何解決這個問題? 為什么會這樣呢?

Windows Server PHP版本是5.6。

composer.json文件:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*",
        "intervention/image": "^2.3",
        "greggilbert/recaptcha": "2.*",
        "laravelcollective/html": "5.2.*",
        "vsch/laravel-translation-manager": "*"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "symfony/css-selector": "2.8.*|3.0.*",
        "symfony/dom-crawler": "2.8.*|3.0.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },
         "files": ["app/Http/Helpers/helpers.php"]
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

我可以通過刪除.env文件中值中的任何空格來解決此問題,例如:

MAIL_PORT= 587
MAIL_FROM_NAME=ABC Medical

至:

MAIL_PORT=587
MAIL_FROM_NAME=ABCMedical

或使用引號:

MAIL_PORT=587
MAIL_FROM_NAME="ABC Medical"

.env不帶引號的空格中傳遞值時出現此錯誤,我通過將值包裝在引號中來解決此錯誤。

您嘗試過composer dump-autoload嗎?

您可以添加一個沒有dump-autoload的類

我可以想到的最常見原因是:

  1. 在不包含在USE語句中的范圍內調用日志類。
  2. 配置文件包含(解析)錯誤,這些錯誤又又使您的應用程序無法找到Log類。 檢查早期在Laravel中加載的文件,例如app.php。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM