Laravel Storageのファイルが削除できない
解決したいこと
Storageのpublicに保存されているファイルを、削除したいです。
if ($request->hasFile('logo')) {
$file = $request->file('logo');
$path = $file->storeAs("$company_id/logos", $file->getClientOriginalName(), 'public');
$url = Storage::url($path);
$old_url = $company->logo_url;
$company->logo_url = $url;
if ($url !== $old_url) {
Storage::disk('public')->delete($old_url);
}
}
updateされる時の挙動で、リクエストでファイルを取得してきたら、ファイルを保存して、URLを生成します。
新しいURLを挿入する前に、元々DBに保存されているlog_urlの値を変数代入して、その後、新しく生成されたURLをDBのlogo_urlに新しく入れてあげています。
Logに出力して、$urlと$old_urlが違う場合など確認しているのですが、なぜか
Storage::disk('public')->delete($old_url);
この部分が正常に機能してくれません。
DBには、新しくURLが挿入されています、また、新しいURLのファイルもstorageのpublicに保存されていることも確認済みです。元々あった古いファイルの削除だけができていないと言った現状です。
Storageのファイルが削除できないなどで調べても、disk指定をすると解決できるといったような記事しか見つける事ができず、既に指定してあるのでお手上げ状態です。
あと、どんなことを確認すればよろしいでしょうか?
有識者の方、どうぞよろしくお願いいたします🙇♂️
補足
シンボリックリンクは当ててます。
php artisan storage:link
また、$urlと$old_urlもログに出力して確認したところ、/storageから始まるURLとなっています。
Log::debug('url', [$url, $old_url]);
出力結果
local.DEBUG: url ["/storage/1/logos/〇〇.jpg","/storage/1/logos/△△.jpg"]