Imagen de archivo Laravel no aparece en el servidor de producción

Cuando corro en mi local, se muestra el archivo de imagen. Pero en el servidor de producción no se muestra.

URL en mi local :

http://localhost:8000/files/image/GOT7.jpg

URL en mi servidor de producción :

http://myApplication.com/files/image/GOT7.jpg

.env en el local :

APP_URL=//localhost

.env en el servidor de producción :

APP_URL=https://myApplication.com

config/filesystem.php

'disks' => [

    'local' => [
        'driver' => 'local',
        'root'   => storage_path('/app'),
    ],
],

ubicación del archivo en la carpeta public/files/image/GOT7.jpg

¿Cómo resolverlo?

Pregunta hecha hace 3 años, 4 meses, 28 días - Por compilercaptain7dab


3 Respuestas:

  • Voy a adivinar aquí y decir que es un problema de enlace simbólico.

    https://laravel.com/docs/8.x/filesystem#the-public-disk

    Estás usando un sistema de archivos llamado local que tiene su raíz en storage_path('/app'). Esta es una referencia a storage directorio en tu proyecto Laravel.

    Este directorio por defecto no es accesible. Tampoco debería serlo. Sólo tu public carpeta debe ser accesible desde Internet (así que todo pasa public/index.php solamente).

    Así que una solución que Laravel ofrece es colocar un enlace en su public carpeta a una ruta de almacenamiento particular. Vea el enlace anterior.

    php artisan storage:link
    

    Esto crearía un enlace simbólico para usted en public/storage a storage/app/public. Esto debería hacer que sus archivos sean accesibles. Para más refinanciamiento vea el enlace de los docs Laravel arriba.

    Respondida el Dec 19, 2020 a las 03:17 - por techwizkid

    Votos positivos: 0 | Votos negativos: 0

  • Para solucionar este problema, puedes seguir los siguientes pasos:

    • Actualiza la configuración en `config/filesystems.php` para que la URL base de los archivos se genere correctamente:
    php
    'public' => [
        'driver' => 'local',
        'root' => public_path(),
        'url' => env('APP_URL').'/files',
        'visibility' => 'public',
    ],
    
    • Verifica que la imagen se encuentre en la ruta correcta en el servidor de producción dentro de la carpeta `public/files/image/GOT7.jpg`.
    • Asegúrate de haber ejecutado el comando `php artisan storage:link` en tu servidor de producción para crear un enlace simbólico a la carpeta de almacenamiento.
    • Continúa utilizando la URL completa en tu código cuando hagas referencia a la imagen, por ejemplo:
    html
    Imagen GOT7
    

    Siguiendo estos pasos, deberías poder ver la imagen en el servidor de producción correctamente.

    Respondida el Dec 20, 2020 a las 03:19 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Problema: Las imágenes no se muestran en el servidor de producción al utilizar Laravel.

    Solución:

    1. Verificar los permisos de archivos:

    Asegúrate de que el archivo de la imagen tenga los permisos de lectura adecuados en el servidor de producción.

    2. Verificar la URL de la imagen:

    Compara la URL de la imagen en tu máquina local y en el servidor de producción. Si son diferentes, actualiza la URL en el código para que coincida con la URL del servidor de producción.

    3. Verificar la configuración de la aplicación:

    En el archivo .env del servidor de producción, asegúrate de que APP_URL esté configurado con la URL correcta de tu aplicación.

    4. Verificar la configuración del sistema de archivos:

    En el archivo config/filesystem.php, asegúrate de que el disco 'local' esté configurado para apuntar a la ubicación correcta de los archivos en el servidor de producción.

    Ejemplo:

    php
    'disks' => [
    
        'local' => [
            'driver' => 'local',
            'root'   => '/home/my_application/public/files',
        ],
    ],
    

    5. Limpiar la caché:

    Ejecuta el comando php artisan cache:clear en el servidor de producción para borrar la caché de configuración y rutas.

    6. Verificar el enlace simbólico:

    En el servidor de producción, asegúrate de que haya un enlace simbólico que apunte a la carpeta public desde la carpeta del proyecto de Laravel.

    7. Verificar el servidor web:

    Comprueba si tu servidor web está configurado correctamente para servir archivos estáticos.

    8. Verificar el firewall:

    Asegúrate de que el firewall en el servidor de producción no esté bloqueando el acceso a la carpeta de archivos donde se encuentran las imágenes.

    Si sigues estos pasos, deberías poder resolver el problema de visualización de imágenes en tu servidor de producción de Laravel.

    Respondida el Dec 20, 2020 a las 03:31 - por Gemini

    Votos positivos: 0 | Votos negativos: 0