回答編集履歴
3
表記ミスがあったので修正しました
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
表示が崩れていたので修正しました
answer
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
],
|
13
13
|
```
|
14
14
|
|
15
|
-
|
15
|
+
php artisan config:cache でconfigをキャッシュに読み込み、
|
16
16
|
|
17
17
|
```
|
18
18
|
$profile_image = 'uploads/user/profile.png';
|
1
間違いがあったので修正しました
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
|
参考
|