crear acces directe de storage
crear acces directe de storage en hosting compartit
Quan executes php artisan storage:link, aquest comandament crea un enllaç simbòlic entre public/storage i storage/app/public. Aquest error indica que l'enllaç simbòlic ja existeix, per tant no el pot tornar a crear.
Solució:
- Revisa si dins de public/ ja hi ha la carpeta storage (que és l’enllaç simbòlic).
- Si existeix i és funcional, no cal tornar-lo a crear. L'enllaç ja està correctament establert.
- Si necessites tornar a crear l'enllaç per algun motiu, primer esborra l'enllaç existent:
rm public/storage
- (Pots fer-ho mitjançant Windows Explorer o amb un entorn bash tipus Git Bash) I després torna a executar:
php artisan storage:link
1. Entendre el Problema
En un entorn de desenvolupament local, normalment faries servir el comandament següent per crear un enllaç simbòlic del directori storage/app/public al directori public/storage:
php artisan storage:link
Això crea un enllaç simbòlic perquè els fitxers emmagatzemats a storage/app/public siguin accessibles públicament a través de public/storage.
2. Problema en Hosting Compartit
En molts entorns de hosting compartit, és possible que no puguis crear enllaços simbòlics amb el comandament php artisan storage:link a causa de les limitacions del servidor (per exemple, deshabilitació d'enllaços simbòlics per seguretat).
3. Solució Manual en Hosting Compartit
Pas 1: Copia el Contingut Manualment
Com que pot ser que no puguis crear enllaços simbòlics, la solució consisteix a copiar manualment el contingut del directori storage/app/public al directori public/storage.
- Pas a pas:
- Accedeix al teu hosting compartit mitjançant FTP o el gestor de fitxers del cPanel.
- Navega fins al directori storage/app/public del teu projecte Laravel.
- Copia tot el contingut d'aquest directori.
- Enganxa aquest contingut dins del directori public/storage.
Pas 2: Configura el Directori Correctament
És important que cada vegada que afegeixes o modifiques fitxers a storage/app/public, repliquis aquests canvis manualment a public/storage.
4. Automatitzar amb un Script
Si prefereixes no fer-ho manualment cada vegada, pots crear un simple script PHP o utilitzar un script en el teu servidor que faci la còpia de fitxers automàticament.
Exemple de script en PHP per copiar fitxers:
<?php $source = __DIR__.'/../storage/app/public'; $destination = __DIR__.'/storage'; function copyFiles($source, $destination) { $directory = opendir($source); @mkdir($destination); while ($file = readdir($directory)) { if ($file != '.' && $file != '..') { if (is_dir($source . '/' . $file)) { copyFiles($source . '/' . $file, $destination . '/' . $file); } else { copy($source . '/' . $file, $destination . '/' . $file); } } } closedir($directory); } copyFiles($source, $destination);
Instruccions:
- Guarda aquest script com copy_storage.php al teu directori arrel de Laravel.
- Executa’l al servidor mitjançant navegador o una crida HTTP si és necessari.
5. Consideracions
- Permisos: Assegura't que el directori public/storage té els permisos correctes per permetre l'accés públic.
- Seguretat: Revisa que el directori storage i altres continguts sensibles no són directament accessibles des del web (evita exposar el directori storage/app completament).
Conclusió
Amb aquests passos, podràs crear un accés directe al directori storage en un hosting compartit, fins i tot si no pots utilitzar enllaços simbòlics. La solució manual és senzilla però efectiva, i pots automatitzar el procés si cal.
- Categoria: web_development
- URL: https://medium.com/@kkhicher1/symlink-laravel-storage-folder-on-shared-hosting-30
- YouTube: https://www.youtube.com/watch?v=ZBFhszar5S8
- Etiquetes: laravel, servidor
- Data de creació: 07/08/2022
- Última actualització: 07/12/2024