未捕获的 ReflectionException:Class 日志不存在 Laravel 5.2
Uncaught ReflectionException: Class log does not exist Laravel 5.2
我目前正在尝试从 github 克隆我的一个现有项目。克隆后我 运行 composer install
在此过程中我收到以下错误:
Uncaught ReflectionException: Class log does not exist
我在 Centos 7 上 运行ning Laravel 5.2。
我看到了对以下内容的引用:
- 正在删除
.env
文件中的空格。
- 删除供应商目录并重新安装
- 正在删除 composer.json
中所需的某些软件包
我有:
- 用
example.env
替换了我的 .env
以避免任何自定义配置错误。
- 我已经删除并重新克隆了存储库。
- 我使用了 Laravel 附带的默认
composer.json
来查看是否有区别。
None 以上这些都给我带来了快乐。我还在另一台机器上设置了相同的环境,应用程序运行良好。这里唯一的区别是机器(工作)不是从 git 克隆的——它是初始构建环境。
我收到的堆栈跟踪:
PHP Fatal error: Uncaught ReflectionException: Class log does not exist in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php:736
Stack trace:
#0 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(736): ReflectionClass->__construct('log')
#1 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build('log', Array)
#2 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('log', Array)
#3 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(845): Illuminate\Foundation\Application->make('log')
#4 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(800): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
#5 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(769): Illuminate\Container\Container->getDependenc in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 736
如有任何帮助,我们将不胜感激。提前致谢。
好的,经过数小时的挖掘,我的问题 的解决方案已经找到。之所以说我的问题是因为Exception
很mis-leading。
Uncaught ReflectionException: Class log does not exist
此异常仅表示 Laravel 尝试记录错误但无法实例化 Laravel 的 Log
class。这不是由于日志 class 变为 walk-abouts 或隐藏。这是因为 Laravel 仍在进行启动过程并且尚未加载 Log
class。
因此,抛出此异常是因为在 Laravel 的启动周期期间发生错误 - 当此错误发生时它试图抛出异常 - 但它不能抛出异常,因为 Log
class 尚未加载。因此我们得到 ReflectionException
的原因
这个在Laravel的所有版本中都发生过,我们在laravel 5.1<=中看到异常抛出的唯一原因是因为之前Laravel 默默地放弃了问题并继续其启动过程 - 基本上,您的应用程序仍会中断,但您不会收到 Log class exception
。
在我的特殊情况下,我没有安装 php-mysql
扩展,导致 Laravel 在启动过程中中断。
最终,由于错误非常 mis-leading,调试您可能做错的事情非常困难。
我希望这对某人有所帮助!
编辑: 关于如何调试此错误并找出缺少 extension/component 的实际原因,请查看@Ben Johnson 的回答。
在您的 .env 文件中,确保您的值没有空格
例如,这是允许的
DB_USERNAME=homestead
这是不允许的
DB_USERNAME=home stead
如果有空格,您可以将值括在引号中。
DB_USERNAME="home stead"
真希望他们对 .env 文件使用 json,也许我们应该请求该功能
我在 CLI 中键入 CMD,不小心将其键入到应用程序配置文件中。为了找到问题,我必须遵循这个过程。
解决方法,如何发现问题:
- 制作配置文件夹的备份副本。尝试在 a
删除一个配置
- 时间并尝试 运行 composer/artisan 命令失败。当你
- 查找失败的文件 - 搜索可能失败的行。
- 失败的原因是:您使用了未加载的class常量
- 还没有。您使用尚未加载的 class/function。等等
https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist?page=2
在我的 .env 文件中添加几行后,我注意到了相同的行为。没有引号不允许有空格,因此可以像这样修复:
APP_YOUR_NAME="A value with some spaces"
在我的例子中,缺少 PDO 扩展是问题所在。安装后问题解决
通过修改 vendor/laravel/framework/src/Illuminate/Container/Container.php
并将以下内容放在顶部可以揭示潜在的错误:
<?php
namespace {
use Monolog\Logger as Monolog;
class log extends Illuminate\Log\Writer {
function __construct()
{
$this->monolog = new Monolog("local");
}
}
}
//Add curly-braces around the original content, like so:
namespace Illuminate\Container {
//All original code in this file goes here.
//...
}
(此想法归功于 https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist/replies/160902。)
要添加到此消息的根本原因列表中,在配置文件 和 中定义闭包随后调用 php artisan config:cache
将导致此问题(至少在Laravel 5.1)。此表现的解决方案:根据 https://github.com/laravel/framework/issues/9625 .
,不要在 Laravel 配置文件中定义闭包
这个问题一般是.env文件中的单词之间有空格引起的。
确保你有类似
的东西
SITE_DESCRIPTION = Social Network for dogs
你把它换成
SITE_DESCRIPTION = 'Social Network for dogs'
编辑::
因为我不满意相当笨拙的调试和修改路径等来顺利获得 VM 运行,我反思了这个过程并重新安装了 vagrant box laravel/homestead (virtualbox 1.0.1
)
对我来说 问题可能源于 config/app.php
中缺少逗号。缺少逗号可能会停止编译过程并吐出 Uncaught ReflectionException: Class log does not exist
错误。
这不是一个直接的答案,但更像是一个指南 post 那些冒险进入这个无声错误深渊的人
系统:macOS Sierra
Vagrant:1.9.1
(撰写本文时的最新版本)
虚拟机:laravel/homestead (virtualbox 0.4.0
)
Laravel版本:5.1.*
PHP: 7.0.*
经过反复尝试解决的问题包括:
- 重写,删除 .env 以解决潜在的解析问题
- php7.1 和 mcrypt/mbstring 问题
- 正在安装作曲家建议的软件包
- 正在更新homestead.rb
- PATH 相关问题
至关重要的是,(对我而言)它似乎是初始设置中的 virtualbox 版本:
vagrant box add laravel/homestead
而是尝试像这样提供版本号:
vagrant box add laravel/homestead
--box-version 0.4.0
其他:
我尝试使用以下 laravel/homestead
virtualbox 版本但失败了:
1.0.1
(默认)
和laravel/homestead-7
:
0.2.1
就我而言,我在配置文件中使用了 route()
方法。显然,这种方法不起作用,因为这些文件不使用 Illuminate Helper,它们很简单。php with data.
在实例化日志class之前读取配置文件,这导致解释得很好的错误。
删除文件 bootstrap/cache/config.php
。 windows 上可能不会显示此文件,如果是,请使用双命令器。绝对有效!
编辑:
这可能是由于缓存.env 文件引起的,如果是这种情况,请尝试删除
bootstrap/cache/config.php
此外,这是由于 conf/ 目录 或 .env 文件中的某些文件中的 语法错误 。
在我的例子中,我得到了这个错误,因为我忘记在添加服务提供者和外观时将 ::class
放在行的末尾,到 conf/app.php 文件中的数组提供者和别名.我更正了这个,错误消失了。
Uncaught ReflectionException: Class log does not exist
出现此错误 laravel 5.2 & > 版本:
我的错误是:
小贴士1:
当您在配置文件中缺少 (;) 代码结尾时
Other syntax Error 这个错误来了
我的错误代码:
<?php
return [
'data' => [
'common' => [
'AuthKey1' => "17086...........9a87a1",
'AuthKey2' => "17086...........9a87a1",
'AuthKey3' => "17043...........59969531",
],
]
]
正确代码:缺少 (;) return 数组的结尾
<?php
return [
'data' => [
'common' => [
'AuthKey1' => "17086...........9a87a1",
'AuthKey2' => "17086...........9a87a1",
'AuthKey3' => "17043...........59969531",
],
]
];
是的,正如@jakehallas 所说。它与异常中显示的内容无关。
实际上,如果有任何数据库问题或其他配置变量问题会导致此问题。
实际上,当我尝试更改 database.php 中的某些内容时,我只是复制了与数据库相同的文件 - copy.php。我没有执行这导致问题。
在完成删除数据库之前所做的工作之后-copy.php 文件工作正常..
谢谢...
此错误可能是由其中一个配置文件中的错误引起的。
要找到导致它的文件,请将 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php 中的函数 loadConfigurationFiles 更改为:
protected function loadConfigurationFiles(Application $app, RepositoryContract $repository)
{
foreach ($this->getConfigurationFiles($app) as $key => $path) {
var_dump('loading key: ' . $key . ' -- path: ' . $path);
$repository->set($key, require $path);
}
}
运行 php artisan 最后加载 "key" 是导致错误的配置文件。
更正它,不要忘记删除您的 var_dump 命令...
祝你好运。
在 .env file 中删除 space 后解决了这个问题(在 sublime 中查看 .env 因为 vi 编辑器不显示 space 在 .env 文件的末尾。) 和命令下方的 运行。
命令:
php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan clear-compiled
我尝试了此处和其他地方提供的许多解决方案。它对我不起作用。我通过手动删除 /var/www/html/bootstrap/cache/compiled.php 并更新自动加载文件解决了这个问题:
rm /var/www/html/bootstrap/cache/compiled.php
composer dump-autoload
我遇到了同样的问题,none 这里的解决方案已经解决
我发现 config
文件夹
的权限被拒绝的例外情况
修复权限后一切正常!
怎么算的?
设置一个断点
vendor/laravel/framework/src/illluminate/Foundation/Http/Kernel.php
handle 函数的 catch 中的第 101 行。
这就是我发现权限被拒绝的方式。
当您错过项目的任何依赖项时出现此类错误。
运行php composer.phar update
运行 php artisan config:cache
帮我解决了。
或者,如果您使用的是共享主机而无法访问 Terminal/CMD,请将其添加到您的 Routs.php
文件中:
Route::get('/config-cache', function() {
Artisan::call('config:cache');
return '<h1>Config cache cleared successfully</h1>';
});
然后转到yourdomain.com/config-cache
到运行这个脚本。
因为没有人提到 orchestra/testbench 但我想我应该添加解决我的问题的方法。
当我在我的一个单元测试中遇到这个错误时,我正在编写一个 Laravel 包。我使用 orchestra/testbench
来测试 Laravel-specific 部分代码。
问题只是测试 class 扩展了 PHPUnit\Framework\TestCase
而不是 Orchestra\Testbench\TestCase
。
我有一些负值,比如
BUSINESS_RECONCILIATION_DAYS=-8
我需要包装
BUSINESS_RECONCILIATION_DAYS="-8"
就我而言,在我将分支合并到 master 后,我的配置文件 (config/app.php) 中缺少一个逗号。
这是一个语法错误,但没有显示出来。
当作曲家更新时,我想 laravel 会做一些验证。
- 安装 "unzip" 包("sudo apt install unzip")如果没有安装。
- 检查所有必需的扩展,例如 "mysql"、"json"、"curl"、"xml"、"zip" 等,然后安装("sudo apt install php7.1-mysql") 如果没有安装。
- 检查您的 file/folder 权限。
- 检查您的“.env”文件。
- 检查您的 "config" 个文件。
- 运行 "composer update" 再一次。
安装 unzip 对我有用。祝你好运:)
就运行
composer update
已解决问题。
正如之前的回答所概述的,我们在 laravel 中的一个配置文件存在问题。我们使用了全局 $app 变量,这在 laravel 5.2+.
中不再可能
我们发现这个的方法是在 src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php.
的 loadConfigurationFiles 方法中检查哪个文件加载失败
即使这是一个旧话题,希望我的回答有一天能对某人(比如我)有所帮助。
就我而言,我发现我应该 运行 来自终端的 artisan 像这样:
sudo php artisan command
那是因为它没有写入日志文件的权限。
我目前正在尝试从 github 克隆我的一个现有项目。克隆后我 运行 composer install
在此过程中我收到以下错误:
Uncaught ReflectionException: Class log does not exist
我在 Centos 7 上 运行ning Laravel 5.2。
我看到了对以下内容的引用:
- 正在删除
.env
文件中的空格。 - 删除供应商目录并重新安装
- 正在删除 composer.json 中所需的某些软件包
我有:
- 用
example.env
替换了我的.env
以避免任何自定义配置错误。 - 我已经删除并重新克隆了存储库。
- 我使用了 Laravel 附带的默认
composer.json
来查看是否有区别。
None 以上这些都给我带来了快乐。我还在另一台机器上设置了相同的环境,应用程序运行良好。这里唯一的区别是机器(工作)不是从 git 克隆的——它是初始构建环境。
我收到的堆栈跟踪:
PHP Fatal error: Uncaught ReflectionException: Class log does not exist in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php:736
Stack trace:
#0 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(736): ReflectionClass->__construct('log')
#1 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build('log', Array)
#2 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('log', Array)
#3 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(845): Illuminate\Foundation\Application->make('log')
#4 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(800): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
#5 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(769): Illuminate\Container\Container->getDependenc in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 736
如有任何帮助,我们将不胜感激。提前致谢。
好的,经过数小时的挖掘,我的问题 的解决方案已经找到。之所以说我的问题是因为Exception
很mis-leading。
Uncaught ReflectionException: Class log does not exist
此异常仅表示 Laravel 尝试记录错误但无法实例化 Laravel 的 Log
class。这不是由于日志 class 变为 walk-abouts 或隐藏。这是因为 Laravel 仍在进行启动过程并且尚未加载 Log
class。
因此,抛出此异常是因为在 Laravel 的启动周期期间发生错误 - 当此错误发生时它试图抛出异常 - 但它不能抛出异常,因为 Log
class 尚未加载。因此我们得到 ReflectionException
这个在Laravel的所有版本中都发生过,我们在laravel 5.1<=中看到异常抛出的唯一原因是因为之前Laravel 默默地放弃了问题并继续其启动过程 - 基本上,您的应用程序仍会中断,但您不会收到 Log class exception
。
在我的特殊情况下,我没有安装 php-mysql
扩展,导致 Laravel 在启动过程中中断。
最终,由于错误非常 mis-leading,调试您可能做错的事情非常困难。
我希望这对某人有所帮助!
编辑: 关于如何调试此错误并找出缺少 extension/component 的实际原因,请查看@Ben Johnson 的回答。
在您的 .env 文件中,确保您的值没有空格
例如,这是允许的
DB_USERNAME=homestead
这是不允许的
DB_USERNAME=home stead
如果有空格,您可以将值括在引号中。
DB_USERNAME="home stead"
真希望他们对 .env 文件使用 json,也许我们应该请求该功能
我在 CLI 中键入 CMD,不小心将其键入到应用程序配置文件中。为了找到问题,我必须遵循这个过程。
解决方法,如何发现问题:
- 制作配置文件夹的备份副本。尝试在 a 删除一个配置
- 时间并尝试 运行 composer/artisan 命令失败。当你
- 查找失败的文件 - 搜索可能失败的行。
- 失败的原因是:您使用了未加载的class常量
- 还没有。您使用尚未加载的 class/function。等等
https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist?page=2
在我的 .env 文件中添加几行后,我注意到了相同的行为。没有引号不允许有空格,因此可以像这样修复:
APP_YOUR_NAME="A value with some spaces"
在我的例子中,缺少 PDO 扩展是问题所在。安装后问题解决
通过修改 vendor/laravel/framework/src/Illuminate/Container/Container.php
并将以下内容放在顶部可以揭示潜在的错误:
<?php
namespace {
use Monolog\Logger as Monolog;
class log extends Illuminate\Log\Writer {
function __construct()
{
$this->monolog = new Monolog("local");
}
}
}
//Add curly-braces around the original content, like so:
namespace Illuminate\Container {
//All original code in this file goes here.
//...
}
(此想法归功于 https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist/replies/160902。)
要添加到此消息的根本原因列表中,在配置文件 和 中定义闭包随后调用 php artisan config:cache
将导致此问题(至少在Laravel 5.1)。此表现的解决方案:根据 https://github.com/laravel/framework/issues/9625 .
这个问题一般是.env文件中的单词之间有空格引起的。 确保你有类似
的东西SITE_DESCRIPTION = Social Network for dogs
你把它换成
SITE_DESCRIPTION = 'Social Network for dogs'
编辑::
因为我不满意相当笨拙的调试和修改路径等来顺利获得 VM 运行,我反思了这个过程并重新安装了 vagrant box laravel/homestead (virtualbox 1.0.1
)
对我来说 问题可能源于 config/app.php
中缺少逗号。缺少逗号可能会停止编译过程并吐出 Uncaught ReflectionException: Class log does not exist
错误。
这不是一个直接的答案,但更像是一个指南 post 那些冒险进入这个无声错误深渊的人
系统:macOS Sierra
Vagrant:1.9.1
(撰写本文时的最新版本)
虚拟机:laravel/homestead (virtualbox 0.4.0
)
Laravel版本:5.1.*
PHP: 7.0.*
经过反复尝试解决的问题包括:
- 重写,删除 .env 以解决潜在的解析问题
- php7.1 和 mcrypt/mbstring 问题
- 正在安装作曲家建议的软件包
- 正在更新homestead.rb
- PATH 相关问题
至关重要的是,(对我而言)它似乎是初始设置中的 virtualbox 版本:
vagrant box add laravel/homestead
而是尝试像这样提供版本号:
vagrant box add laravel/homestead
--box-version 0.4.0
其他:
我尝试使用以下 laravel/homestead
virtualbox 版本但失败了:
1.0.1
(默认)
和laravel/homestead-7
:
0.2.1
就我而言,我在配置文件中使用了 route()
方法。显然,这种方法不起作用,因为这些文件不使用 Illuminate Helper,它们很简单。php with data.
在实例化日志class之前读取配置文件,这导致
删除文件 bootstrap/cache/config.php
。 windows 上可能不会显示此文件,如果是,请使用双命令器。绝对有效!
编辑:
这可能是由于缓存.env 文件引起的,如果是这种情况,请尝试删除
bootstrap/cache/config.php
此外,这是由于 conf/ 目录 或 .env 文件中的某些文件中的 语法错误 。
在我的例子中,我得到了这个错误,因为我忘记在添加服务提供者和外观时将 ::class
放在行的末尾,到 conf/app.php 文件中的数组提供者和别名.我更正了这个,错误消失了。
Uncaught ReflectionException: Class log does not exist
出现此错误 laravel 5.2 & > 版本:
我的错误是:
小贴士1: 当您在配置文件中缺少 (;) 代码结尾时
Other syntax Error 这个错误来了
我的错误代码:
<?php
return [
'data' => [
'common' => [
'AuthKey1' => "17086...........9a87a1",
'AuthKey2' => "17086...........9a87a1",
'AuthKey3' => "17043...........59969531",
],
]
]
正确代码:缺少 (;) return 数组的结尾
<?php
return [
'data' => [
'common' => [
'AuthKey1' => "17086...........9a87a1",
'AuthKey2' => "17086...........9a87a1",
'AuthKey3' => "17043...........59969531",
],
]
];
是的,正如@jakehallas 所说。它与异常中显示的内容无关。
实际上,如果有任何数据库问题或其他配置变量问题会导致此问题。
实际上,当我尝试更改 database.php 中的某些内容时,我只是复制了与数据库相同的文件 - copy.php。我没有执行这导致问题。
在完成删除数据库之前所做的工作之后-copy.php 文件工作正常..
谢谢...
此错误可能是由其中一个配置文件中的错误引起的。 要找到导致它的文件,请将 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php 中的函数 loadConfigurationFiles 更改为:
protected function loadConfigurationFiles(Application $app, RepositoryContract $repository)
{
foreach ($this->getConfigurationFiles($app) as $key => $path) {
var_dump('loading key: ' . $key . ' -- path: ' . $path);
$repository->set($key, require $path);
}
}
运行 php artisan 最后加载 "key" 是导致错误的配置文件。 更正它,不要忘记删除您的 var_dump 命令... 祝你好运。
在 .env file 中删除 space 后解决了这个问题(在 sublime 中查看 .env 因为 vi 编辑器不显示 space 在 .env 文件的末尾。) 和命令下方的 运行。
命令:
php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan clear-compiled
我尝试了此处和其他地方提供的许多解决方案。它对我不起作用。我通过手动删除 /var/www/html/bootstrap/cache/compiled.php 并更新自动加载文件解决了这个问题:
rm /var/www/html/bootstrap/cache/compiled.php
composer dump-autoload
我遇到了同样的问题,none 这里的解决方案已经解决
我发现 config
文件夹
修复权限后一切正常!
怎么算的?
设置一个断点
vendor/laravel/framework/src/illluminate/Foundation/Http/Kernel.php
handle 函数的 catch 中的第 101 行。
这就是我发现权限被拒绝的方式。
当您错过项目的任何依赖项时出现此类错误。
运行php composer.phar update
运行 php artisan config:cache
帮我解决了。
或者,如果您使用的是共享主机而无法访问 Terminal/CMD,请将其添加到您的 Routs.php
文件中:
Route::get('/config-cache', function() {
Artisan::call('config:cache');
return '<h1>Config cache cleared successfully</h1>';
});
然后转到yourdomain.com/config-cache
到运行这个脚本。
因为没有人提到 orchestra/testbench 但我想我应该添加解决我的问题的方法。
当我在我的一个单元测试中遇到这个错误时,我正在编写一个 Laravel 包。我使用 orchestra/testbench
来测试 Laravel-specific 部分代码。
问题只是测试 class 扩展了 PHPUnit\Framework\TestCase
而不是 Orchestra\Testbench\TestCase
。
我有一些负值,比如
BUSINESS_RECONCILIATION_DAYS=-8
我需要包装
BUSINESS_RECONCILIATION_DAYS="-8"
就我而言,在我将分支合并到 master 后,我的配置文件 (config/app.php) 中缺少一个逗号。
这是一个语法错误,但没有显示出来。
当作曲家更新时,我想 laravel 会做一些验证。
- 安装 "unzip" 包("sudo apt install unzip")如果没有安装。
- 检查所有必需的扩展,例如 "mysql"、"json"、"curl"、"xml"、"zip" 等,然后安装("sudo apt install php7.1-mysql") 如果没有安装。
- 检查您的 file/folder 权限。
- 检查您的“.env”文件。
- 检查您的 "config" 个文件。
- 运行 "composer update" 再一次。
安装 unzip 对我有用。祝你好运:)
就运行
composer update
已解决问题。
正如之前的回答所概述的,我们在 laravel 中的一个配置文件存在问题。我们使用了全局 $app 变量,这在 laravel 5.2+.
中不再可能我们发现这个的方法是在 src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php.
的 loadConfigurationFiles 方法中检查哪个文件加载失败即使这是一个旧话题,希望我的回答有一天能对某人(比如我)有所帮助。 就我而言,我发现我应该 运行 来自终端的 artisan 像这样:
sudo php artisan command
那是因为它没有写入日志文件的权限。