I am deploying my first project on a shared hosting.
I followed this tutorial to deploy the website and turn the public
folder into the public_html
folder of my hosting plan.
When I upload an image from my website (with storeAs()
method), the file is uploaded in the private/storage
folder, not the public
one (where I would like).
The asset()
function try to display the image from public_html/storage
.
What can I do ?
Thank you 🙂
My files are like this :
private/ - app/ - bootstrap/ - config/ - database/ - resources/ - routes/ - storage/ - tests/ - vendor/ public_html/ - css/ - js/ - images/ - js/ - storage/
(Laravel 8, trying to be hosted on Hostinger)
The tutorial : https://dev.to/pushpak1300/deploying-laravel7-app-on-shared-hosting-hostinger-31cj
Advertisement
Answer
Ok guys i found the solution !
Here is how to deploy your Laravel project on one shared hosting using public_html
folder : https://dev.to/pushpak1300/deploying-laravel7-app-on-shared-hosting-hostinger-31cj
This will work but you can have a problem (like me) with the storeAs()
method if you deal with file uploads.
To solve this problem, I edited the MyProject/config/filesystem.php
by adding this in the available disks :
'public_folder' => [ 'driver' => 'local', 'root' => 'PATH', 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ]
Replace PATH
with the complete path to your public storage (for example /home/you/domains/mydomain.com/public_html/storage/
).
Now, open the controller which manage file upload and edit it like this :
request()->image->storeAs('/uploads', 'filename.png', 'public_folder');
This will upload the request()->image
in public_html/storage/uploads/filename.png
.
I hope it will help you if you had the same problem as me.