1. ホーム
  2. php

[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。

2022-02-14 10:54:50

質問

このロジックで混乱しています。Laravel 5.2 Storage::makeDirectoryを使って、2つのパスを作成しているのですが、最初に( video/ ) は正しく作成され、もう一方 ( サムネイル が表示されない。

$user = 1;

if(!File::exists(public_path() . "/video/$user"))
{
    Storage::makeDirectory(public_path() . "/video/$user", 0777);
}

$file = rand(1111111111111, 9999999999999);
$imgpath = public_path() . "/thumbnails/$file";

if(!File::exists($imgpath))
{
    Storage::makeDirectory($imgpath, 0777);
}

以下はパーミッションの設定です。

drwxrwxrwx 2 ubuntu ubuntu 4096 Jun 28 19:33 thumbnails/
drwxrwxrwx 3 ubuntu ubuntu 4096 Jun 29 15:21 video/

また、cliから与えられた文字列でディレクトリを作成することもできました。 画像パス :

mkdir /home/ubuntu/workspace/site/public/thumbnails/6300643852187

何かご意見はありますか?

解決方法は?

さて... 何が起こっているのかがわかった。

File::exists(public_path() . "/video/$user") が探しているのはこれです。

/ホーム/ubuntu/ワークスペース/サイト/パブリック/ビデオ/の場合 N


そして Storage::makeDirectory(public_path() . "/video/$user") にディレクトリを作成しています。

/ホーム/ubuntu/ワークスペース/サイト/ストレージ/アプリ/パブリック/ビデオ/。 N


だから、私はに行くことができます。 site/config/filesystems.php のルートを変更し アプリ app/public を使うことで確認することができます。 storage_path('app') .
しかし、その代わり、動画を保存する際に ストレージ/アプリ/パブリック/ビデオ そして storage/app/public/thumbnails と表示され、パッケージのエラーが表示されます。

しかし、両方のパスが書き込み可能で、今頃は動作しているはずです。