Я использую фасад хранилища Laravel для хранения изображений в моем приложении Laravel. Как владелец, так и группа файлов хранилища, созданная Storage фасадом, является www-data. Я использую Планировщик, чтобы вызвать мою команду, которая отправляет изображения на Tumblr с их API.
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
Commands\PublishPosts::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('posts:publish')
->everyThirtyMinutes()
->timezone('Asia/Karachi')
->when(function () {
return date('H') >= 0 && date('H') <= 5;
});
}
}
Моя задача cron будет вызывать планировщик команд Laravel и публиковать изображения на Tumblr.
* * * * * php /var/www/laravel/blogbits/artisan schedule:run >> /dev/null 2>&1
После успешного размещения изображения мой метод команды удаляет изображение.
/**
* Post a batch of posts
* @return \Illuminate\Http\JsonResponse
*/
public function publishPostBatch(){
$posts = Post::take($this->getBatchPostLimit())->get();
foreach ($posts as $post){
if($this->createPost($post)){
$post->delete();
$this->deleteImage($post->file_name);
}
}
}
Но поскольку планировщик запускается заданием cron, которое было инициировано моим именем пользователя, а не пользователем или группой apache www-data, он не может удалить изображение, хранящееся в пути хранения. Есть ли способ, которым я могу изменить пользователя файла, созданного фасадом хранилища? Или есть лучший способ справиться с этой ситуацией?
Задача ещё не решена.
Других решений пока нет …