-
Notifications
You must be signed in to change notification settings - Fork 522
Description
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:
- Instalamos libapache2-mod-xsendfile
- En nuestro virtualhost añadimos X-SendFile on
- En configuration.php establecemos $_configuration['enable_x_sendfile_headers'] = true;
- Descargamos un archivo, por ejemplo un adjunto de una tarea enviada por un alumno
- 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