teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

表記ミスがあったので修正しました

2021/04/28 06:49

投稿

AbeTakashi
AbeTakashi

スコア4915

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  php artisan config:cache でconfigをキャッシュに読み込み、
16
16
 
17
17
  ```
18
- $profile_image = 'uploads/user/profile.png';
18
+ $profile_image = 'public/uploads/user/profile.png';
19
19
  Storage::disk('project')->delete($profile_image);
20
20
  Storage::disk('project')->copy('resources/user/profile.png', $profile_image);
21
21
  ```

2

表示が崩れていたので修正しました

2021/04/28 06:49

投稿

AbeTakashi
AbeTakashi

スコア4915

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  ],
13
13
  ```
14
14
 
15
- ```php artisan config:cache``` でconfigをキャッシュに読み込み、
15
+ php artisan config:cache でconfigをキャッシュに読み込み、
16
16
 
17
17
  ```
18
18
  $profile_image = 'uploads/user/profile.png';

1

間違いがあったので修正しました

2021/04/28 06:46

投稿

AbeTakashi
AbeTakashi

スコア4915

answer CHANGED
@@ -1,3 +1,30 @@
1
+ まず ```config/filesystems.php```を確認してルートパスを確認します。おそらく```'public'```は```storage_path('app/public')```となっていると思います。ここを起点にしてすべてを相対パスで考える必要があります。ですが、相対パスを使ってrootの上に行こうとすると```laravel Path is outside of the defined root```という例外が出てエラーになります(余計なディレクトリにアクセスさせない安全機構と思われます)ので、この方法ではダメなようです。
2
+
3
+ なので、これが一番良い方法かは分かりませんが、filesystem.phpに以下の設定をして、プロジェクト全体のローカルディスクを作ると目的を果たせるようにはなります。
4
+
5
+ config.phpに'project'の内容を追加
6
+ ```
7
+ 'disks' => [
8
+ 'project' => [
9
+ 'driver' => 'local',
10
+ 'root' => base_path(),
11
+ ],
12
+ ],
13
+ ```
14
+
15
+ ```php artisan config:cache``` でconfigをキャッシュに読み込み、
16
+
17
+ ```
18
+ $profile_image = 'uploads/user/profile.png';
19
+ Storage::disk('project')->delete($profile_image);
20
+ Storage::disk('project')->copy('resources/user/profile.png', $profile_image);
21
+ ```
22
+
23
+ これでどうでしょう。ただ、すべてのプロジェクトファイルにアクセスできてしまうので、安全性としてはあまりよくないですね。アップロードする画像をpublic以外にするなどして、もう少しスマートな方法を考えた方が良いような気もします。
24
+
25
+ ---
26
+ 最初に書いた以下の内容は間違いでした。
27
+
1
28
  相対パスを使うとトラブル場合が多いので、絶対パスを使うべきかと思います。```base_path()```や```storage_path()```、```resource_path()```など色々ありますので、要件に沿って利用してみてください。
2
29
 
3
30
  参考