如何使用消息 'Class log does not exist' 修复未捕获的异常 'ReflectionException'?
How to fix Uncaught exception 'ReflectionException' with message 'Class log does not exist'?
我在 Windows Server 20012 R2 上遇到作曲家问题。我正在尝试部署一个网站,每次 运行 composer install
或 composer 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 服务器 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"
}
}
你试过了吗
composer dump-autoload
?
你可以添加一个 class 没有 dump-autoload
我能想到的导致此错误发生的最常见原因如下:
- Log class 在不包含在 USE 语句中的范围内被调用。
- 配置文件包含(解析)错误,这反过来又不允许您的应用程序找到日志 class。检查 Laravel 早期加载的文件,例如 app.php.
我能够通过删除 .env 文件中值中的任何 space 来解决这个问题,例如:
MAIL_PORT= 587
MAIL_FROM_NAME=ABC Medical
至:
MAIL_PORT=587
MAIL_FROM_NAME=ABCMedical
或使用引号:
MAIL_PORT=587
MAIL_FROM_NAME="ABC Medical"
我在不带引号的 .env
中传递带空格的值时出现此错误,我通过将值括在引号中修复了它。
我在 Windows Server 20012 R2 上遇到作曲家问题。我正在尝试部署一个网站,每次 运行 composer install
或 composer 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 服务器 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"
}
}
你试过了吗
composer dump-autoload
?
你可以添加一个 class 没有 dump-autoload
我能想到的导致此错误发生的最常见原因如下:
- Log class 在不包含在 USE 语句中的范围内被调用。
- 配置文件包含(解析)错误,这反过来又不允许您的应用程序找到日志 class。检查 Laravel 早期加载的文件,例如 app.php.
我能够通过删除 .env 文件中值中的任何 space 来解决这个问题,例如:
MAIL_PORT= 587
MAIL_FROM_NAME=ABC Medical
至:
MAIL_PORT=587
MAIL_FROM_NAME=ABCMedical
或使用引号:
MAIL_PORT=587
MAIL_FROM_NAME="ABC Medical"
我在不带引号的 .env
中传递带空格的值时出现此错误,我通过将值括在引号中修复了它。