Hola no se si aún te sirva la solución, pero de igual manera estaba teniendo este error en mi servidor Hostinger, es un cambio muy pequeño pero clave.
Al subir una aplicación Laravel/Filament a un hosting en la nube, las imágenes cargadas a través de la sección de administración no se muestran en el frontend. En su lugar, aparece un icono de imagen rota. Al revisar los logs de Nginx, el error específico que se presenta es: failed (40: Too many levels of symbolic links).
Esto indica que el servidor web (Nginx) no puede acceder a las imágenes porque el enlace simbólico public/storage que apunta a la ubicación real de los archivos (usualmente storage/app/public) está configurado incorrectamente o sufre de un problema de permisos que el sistema interpreta como un bucle o una cadena excesiva de enlaces.
1.- Enlace Simbólico (public/storage) con propietario incorrecto (root:root): Aunque el destino del enlace (storage/app/public) tuviera los permisos correctos, el propio archivo del enlace simbólico era propiedad de root, mientras que Nginx se ejecuta con un usuario diferente (www-data). Esto puede causar que Nginx no "confíe" en el enlace o lo interprete erróneamente.
2.- Posible creación incorrecta o bucle en el enlace simbólico: Aunque menos probable una vez que se verifica la ruta de destino, un enlace simbólico que apunta a sí mismo o a un enlace anidado puede generar este error.
La solución se centra en eliminar cualquier enlace simbólico public/storage existente, y luego recrearlo asegurándose de que el propietario sea el usuario del servidor web (www-data en la mayoría de los casos de Nginx en Ubuntu/Debian).
1.- Eliminar el Enlace Simbólico Problemático
Primero, elimina el enlace simbólico public/storage existente. Esto no borrará tus imágenes, ya que el enlace es solo un "acceso directo".
# Navega al directorio 'public' de tu proyecto Laravel
cd /var/www/nombre_proyecto/public
# Elimina el enlace simbólico 'storage'
rm storage
2. Recrear el Enlace Simbólico con el Propietario Correcto
La forma más efectiva es intentar crear el enlace simbólico directamente con el usuario del servidor web.
# Navega a la raíz de tu proyecto Laravel
cd /var/www/nombre_tu_proyecto/
# Ejecuta el comando storage:link como el usuario del servidor web
# Sustituye 'www-data' si tu usuario de Nginx es otro (ej. 'nginx')
sudo -u www-data php artisan storage:link
Si el comando sudo -u www-data php artisan storage:link falla o te da un error, puedes ejecutar php artisan storage:link (que lo creará como root) y luego usar el siguiente comando para cambiar su propiedad:
# Navega al directorio 'public' de tu proyecto
cd /var/www/nombre_tu_proyecto/public
# Cambia la propiedad del enlace simbólico *directamente* (con -h o --no-dereference)
# Sustituye 'www-data' si tu usuario de Nginx es otro
sudo chown -h www-data:www-data storage
3. Verificar la Propiedad del Enlace Simbólico
Es crucial verificar que el paso anterior haya funcionado y que el enlace simbólico storage ahora sea propiedad de tu usuario de servidor web.
# Desde /var/www/nombre_de_tu_proyecto/public
ls -l storage
La salida debería ser similar a esta (observa www-data www-data como propietario):
lrwxrwxrwx 1 www-data www-data 35 Jul 3 03:27 storage -> /var/www/nombre_de_tu_proyecto/storage/app/public
4. Limpiar Cachés de Laravel
Para asegurar que Laravel no esté sirviendo URLs de imágenes desactualizadas o incorrectas debido a la caché, límpialas.
# Desde la raíz de tu proyecto Laravel
php artisan config:clear
php artisan cache:clear
php artisan view:clear
5. Reiniciar Nginx
Para asegurar que Laravel no esté sirviendo URLs de imágenes desactualizadas o incorrectas debido a la caché, límpialas.
sudo systemctl reload nginx
De esta forma logre solucionar mi problema, en sí los puntos importantes que hay que tener en cuenta al levantar una página web en un hostinger o servidor, son los permisos de usuarios y que usuarios estan creando los archivos y dando acceso, en este caso es importante que www-data tenga acceso a estos archivos y carpetas porque es el usuario que usa Nginx para adiministrar los archivos del proyecto y servirlos, espero te ayude o ayude a otras personas con este problema 🙌.