Laravel Supervisord 无法创建文件
Laravel Supervisord cannot create file
我正在使用 Laravel 主管作为导出 excel 文件的工作。
使用
时正常操作成功
php artisan queue:work
文件在'public/excel'目录下成功生成
但是使用supervisor时,job执行了,但是没有生成文件
我查看了文件夹权限,已经是0777了。
这是配置文件。我做的和文档中的完全一样
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/xxxx/www/xxxx/artisan queue:work
--sleep=3 --tries=3
autostart=true
autorestart=true
username=xxxx
password=xxxx
numprocs=8
redirect_stderr=true
stdout_logfile=/home/xxxx/www/xxxx/worker.log
这里是worker.log
[2017-12-08 20:44:42] Processing: App\Jobs\ExportExcel
[2017-12-08 20:44:44] Processed: App\Jobs\ExportExcel
我有一些命令可以在 ExportExcel 作业中写入数据库,它实际上工作正常。但是文件没有生成。 laravel.log 也没有错误
我通过以下方式找到了解决方案:
-Laravel 作业 '/' 路径未引用 public 因此我将导出的数据移动到存储路径
https://laravel.io/forum/07-11-2014-file-permission-problems-in-queue-jobs
-显然服务器没有使用我更新后的代码,仍然使用旧路径。通过使用
php artisan config:clear
php artisan cache:clear
将清除缓存并使用新代码。感谢此视频的其中一条评论
https://youtu.be/_SndYcQvIuQ
-当我发布这个问题时,文件实际上已经生成了,但是在其他文件夹中,但是控制器正在引用旧代码中的新路径,所以它找不到文件。
干杯
就我而言:
php: 7.4.2
Laravel: 6.14
maatwebsite/excel: 3.1.18
我所要做的就是为存储方法传递第三个参数。
Excel::store(new UsersExport(), 'users_2020.xlsx', 'local');
这是它的供应商文件。这是第三个参数 $diskName ,默认为空。尽管我的 filesystem.php 已将 'default' => env('STORAGE_DRIVER', 'local')
设置为本地。
public function store($export, string $filePath, string $diskName = null, string $writerType = null, $diskOptions = [])
我正在使用 Laravel 主管作为导出 excel 文件的工作。
使用
时正常操作成功
php artisan queue:work
文件在'public/excel'目录下成功生成
但是使用supervisor时,job执行了,但是没有生成文件
我查看了文件夹权限,已经是0777了。
这是配置文件。我做的和文档中的完全一样
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/xxxx/www/xxxx/artisan queue:work
--sleep=3 --tries=3
autostart=true
autorestart=true
username=xxxx
password=xxxx
numprocs=8
redirect_stderr=true
stdout_logfile=/home/xxxx/www/xxxx/worker.log
这里是worker.log
[2017-12-08 20:44:42] Processing: App\Jobs\ExportExcel
[2017-12-08 20:44:44] Processed: App\Jobs\ExportExcel
我有一些命令可以在 ExportExcel 作业中写入数据库,它实际上工作正常。但是文件没有生成。 laravel.log 也没有错误
我通过以下方式找到了解决方案:
-Laravel 作业 '/' 路径未引用 public 因此我将导出的数据移动到存储路径
https://laravel.io/forum/07-11-2014-file-permission-problems-in-queue-jobs
-显然服务器没有使用我更新后的代码,仍然使用旧路径。通过使用
php artisan config:clear
php artisan cache:clear
将清除缓存并使用新代码。感谢此视频的其中一条评论
https://youtu.be/_SndYcQvIuQ
-当我发布这个问题时,文件实际上已经生成了,但是在其他文件夹中,但是控制器正在引用旧代码中的新路径,所以它找不到文件。
干杯
就我而言:
php: 7.4.2
Laravel: 6.14
maatwebsite/excel: 3.1.18
我所要做的就是为存储方法传递第三个参数。
Excel::store(new UsersExport(), 'users_2020.xlsx', 'local');
这是它的供应商文件。这是第三个参数 $diskName ,默认为空。尽管我的 filesystem.php 已将 'default' => env('STORAGE_DRIVER', 'local')
设置为本地。
public function store($export, string $filePath, string $diskName = null, string $writerType = null, $diskOptions = [])