【问题标题】:LARAVEL queues with Storage directories带有存储目录​​的 LARAVEL 队列
【发布时间】:2019-03-09 21:50:41
【问题描述】:

我尝试使用 laravel 5.7 的队列系统(这对我来说是第一次 ;-))。 我构建了一个脚本来浏览文件夹(包含很多文件和子文件夹),打开 excel 文件,恢复其中的一些数据并将所有这些数据放入 mysql 数据库中。 脚本太长,无法执行。我想用 laravel 的队列系统在后台做。 我脚本中的第一个函数是这个:

$directories = Storage::disk('doc')->directories();

当我在控制器中测试这条线时,它正在工作。 或者如果我这样做:

Route::get('/test', function (){
   $directories = Storage::disk('doc')->directories();
   dd($directories);
});

页面显示一个包含目录列表的数组(如预期的那样)。 但是,当我尝试在作业(句柄函数)中执行此操作时:

$directories = Storage::disk('doc')->directories();
print_r($directories);

CLI 中显示的数组为空。 当我在同一份工作中这样做时:

$file_url = Storage::disk('doc')->url('name.xlsx');
print_r($file_url);

CLI 中显示的 url 是正确的!所以我的磁盘存储设置正确! 为什么 ->directories() 函数在作业句柄中不起作用? ->files() 函数也不起作用..!

谢谢你的帮助!!!!!!

【问题讨论】:

  • 我怀疑文件/目录的权限,但您可以查看一些建议here 它可能会有所帮助。
  • 值得一提的是Storage::disk('doc')->url('name.xlsx')实际上并没有访问文件系统来创建url,所以它不会告诉你任何关于你的磁盘配置是否正确的有用信息
  • 好的,明白了!谢谢你们俩!但是当我在本地服务器(laragon)中运行命令“php artisan queue:work”时,如果我理解的话,这是同一个用户......不是吗?

标签: php laravel directory queue storage


【解决方案1】:

我找到了解决方案。我不知道这是否是最好的方法,但它似乎有效(在本地):

$doc = Storage::disk('doc')->getAdapter()->getPathPrefix();
$path = public_path().'\\'.$doc;
$files = new Filesystem;
$dir = $files->directories($path);
print_r($dir);

数组不为空!!!

别忘了:

use Storage;
use Illuminate\Filesystem\Filesystem;

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 2013-07-25
    • 2019-03-28
    • 2016-02-09
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多