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