Laravel 存储 returns FileNotFoundException 但是文件存在
Laravel storage returns FileNotFoundException But file exists
我想读取 laravel 6 中的文件内容,该文件已经存在但 laravel return 未找到异常。
这是我的日志文件目录:
/var/www/html/myLaravelLab/storage/logs/laravel-2019-10-14.log
$contents = Storage::get(storage_path('logs/laravel-2019-10-14.log'));
Laravel return 这个错误:Illuminate\Contracts\Filesystem\FileNotFoundException
但是文件已经存在!
我要读取文件内容。
Laravel版本:6.2.0
- PHP版本:7.2.19
storage_path('logs/laravel-2019-10-14.log')
将 return 资源的完整路径,例如:
http://www.app-name.com/storage/logs/laravel-2019-10-14.log
.
Storage::get() 接受一个路径相对于存储磁盘的根目录。
您可能不需要在您的函数中包含 storage_path
,并尝试类似的操作:
Storage::get('logs/laravel-2019-10-14.log')
查看磁盘在哪里搜索文件,然后调整路径,直到搜索到正确的目录。
storage_path 基本上会在您提供的路径前加上存储文件夹的路径,因此 /var/www/website.com/storage/logs/laravel-2019-10-14.log
.
如果您使用 Storage::path(),其工作方式类似,但来自配置的存储磁盘(如果您愿意,可以基于云)。主要区别在于它看起来在 storage/app
中,因此您需要将日志移到那里,或者您可能可以说:
$contents = Storage::get('../logs/laravel-2019-10-14.log');
或
$contents = file_get_contents(storage_path('logs/laravel-2019-10-14.log'));
编辑:
我刚刚检查过,您不能使用 Storage::get('../')
,因为它超出了可用范围。如果您想使用 Storage::get()
方法,您需要调整配置中的位置。
在 config/filesystems.php
'disks' => [
'local' => [
'driver' => 'local',
// 'root' => storage_path('app'),
'root' => storage_path(),
],
]
那么你可以使用
$contents = Storage::get('logs/laravel-2019-10-14.log');
在config/filesystems.php
添加新磁盘logs
:
'disks' => [
'logs' => [
'driver' => 'local',
'root' => storage_path('logs'),
],
// orher disks...
现在您可以获得日志文件:
Storage::disk('logs')->get('laravel-2019-10-14.log');
也许存储 class 对您的实施来说太过分了。您可以改用 PHP file_get_contents() 函数:
$contents=file_get_contents( storage_path( 'logs/laravel-2019-10-14.log' ) );
我想读取 laravel 6 中的文件内容,该文件已经存在但 laravel return 未找到异常。
这是我的日志文件目录:
/var/www/html/myLaravelLab/storage/logs/laravel-2019-10-14.log
$contents = Storage::get(storage_path('logs/laravel-2019-10-14.log'));
Laravel return 这个错误:Illuminate\Contracts\Filesystem\FileNotFoundException
但是文件已经存在!
我要读取文件内容。
Laravel版本:6.2.0 - PHP版本:7.2.19
storage_path('logs/laravel-2019-10-14.log')
将 return 资源的完整路径,例如:
http://www.app-name.com/storage/logs/laravel-2019-10-14.log
.
Storage::get() 接受一个路径相对于存储磁盘的根目录。
您可能不需要在您的函数中包含 storage_path
,并尝试类似的操作:
Storage::get('logs/laravel-2019-10-14.log')
查看磁盘在哪里搜索文件,然后调整路径,直到搜索到正确的目录。
storage_path 基本上会在您提供的路径前加上存储文件夹的路径,因此 /var/www/website.com/storage/logs/laravel-2019-10-14.log
.
如果您使用 Storage::path(),其工作方式类似,但来自配置的存储磁盘(如果您愿意,可以基于云)。主要区别在于它看起来在 storage/app
中,因此您需要将日志移到那里,或者您可能可以说:
$contents = Storage::get('../logs/laravel-2019-10-14.log');
或
$contents = file_get_contents(storage_path('logs/laravel-2019-10-14.log'));
编辑:
我刚刚检查过,您不能使用 Storage::get('../')
,因为它超出了可用范围。如果您想使用 Storage::get()
方法,您需要调整配置中的位置。
在 config/filesystems.php
'disks' => [
'local' => [
'driver' => 'local',
// 'root' => storage_path('app'),
'root' => storage_path(),
],
]
那么你可以使用
$contents = Storage::get('logs/laravel-2019-10-14.log');
在config/filesystems.php
添加新磁盘logs
:
'disks' => [
'logs' => [
'driver' => 'local',
'root' => storage_path('logs'),
],
// orher disks...
现在您可以获得日志文件:
Storage::disk('logs')->get('laravel-2019-10-14.log');
也许存储 class 对您的实施来说太过分了。您可以改用 PHP file_get_contents() 函数:
$contents=file_get_contents( storage_path( 'logs/laravel-2019-10-14.log' ) );