Skip to content

Error descargando ficheros con X-Sendfile activo #5673

@afelpeto

Description

@afelpeto

Describe el problema
Al activar la optimización de descargas instalando el módulo libapache2-mod-xsendfile, cuando intentamos descargar un archivo obtenemos un error 404.

Cómo reproducir
Pasos para reproducir el problema:

  1. Instalamos libapache2-mod-xsendfile
  2. En nuestro virtualhost añadimos X-SendFile on
  3. En configuration.php establecemos $_configuration['enable_x_sendfile_headers'] = true;
  4. Descargamos un archivo, por ejemplo un adjunto de una tarea enviada por un alumno
  5. Obtenemos un 404

Comportamiento esperado
Se descarga el archivo solicitado

**Servidor

  • Sistema operativo : Ubuntu 22.04
  • Versión de Chamilo: 1.11.26
  • Versión de PHP: 7.4

Contexto adicional
Al establecer en app/config/configuration.php la variable $_configuration['enable_x_sendfile_headers'] = true; el código pasa en main/inc/lib/document.lib.php por la función file_send_for_download y entra en el siguiente if:

            // Force the browser to save the file instead of opening it
            if (isset($sendFileHeaders) &&
                !empty($sendFileHeaders)) {
                header("X-Sendfile: $filename");
            }

X-sendfile, en este caso está recibiendo un nombre de archivo, pero no un path con la ruta completa de la ubicación del archivo a descargar, por tanto, debería modificarse header("X-Sendfile: $filename"); por lo siguiente header("X-Sendfile: $full_file_name"); para que la descarga se procese correctamente y no devuelva un error 404

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions