【发布时间】: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