Error en copia masiva de mesas exámenes

Estimados, buen día, estamos intentando realizar la operatoria de copia masiva de mesas de exámenes del turno anterior, pero el sistema nos está presentando el siguiente error:

“No es posible crear el directorio /mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs/procesos_bk/pro_copiado_masivo_mesas_de_examen__20241226_120703___9781/, verifique que el usuario de Apache posea privilegios de escritura sobre este directorio.”

Saludos cordiales y quedo a la espera de sus sugerencias

Ir a las issue

Hola @Mauro_Alfredo_Vecchi

Un problema que observo es que tenes la carpeta instalacion/i__produccion en lugar de instalacion/i__desarrollo, esto es debido a que en Instalación desde cero de SIU-Guaraní Gestión 3.20 en entorno de Producción cuando te preguntó Se trata de una instalacion de producción? (Si o No) (s/n): seguramente pusiste s en lugar de n, aunque la instalación sea de producción siempre se pone n.

Una solución seria lo que propone el siguiente foro:

  1. Primero poner en modo mantenimiento Autogestión para que los alumnos y docentes no sigan modificando en la base de datos, esto se puede hacer desde Apache deshabilitando temporalmente el sitio.

  2. Hacer un backup de la base de datos.

  3. Seguir los pasos de este foro, donde dice sólo deberías borrar la carpeta ‘<path proyecto Guaraní>/lib/toba/instalacion’., deberías mover <path proyecto Guaraní>/instalacion a otro lugar así te queda de backup por si configuraste mas cosas.

Te dejo otros foros donde pasa lo mismo:

Saludos.

Hola @Mauro_Alfredo_Vecchi

¿pudieron avanzar cambiando la carpeta instalacion/i__produccion por instalacion/i__desarrollo?

El error No es posible crear el directorio $path, verifique que el usuario de Apache posea privilegios de escritura sobre este directorio lo lanza en la función crear_arbol_directorios de vendor/siu-toba/framework/php/lib/toba_manejador_archivos.php, es muy probable que se llame de __construct de php/nucleo/_lib/utilidades/guarani_logs.php para generar los logs de Esquema de procesos background. Creo que el problema viene de la mano con el hecho de que tienen instalacion/i__produccion en lugar de instalacion/i__desarrollo.

Si en php/operaciones/inicio/item_inicial.php agregas lo siguiente para probar, ¿que error te devuelve por pantalla al querer entrar a Gestión?

mkdir("/mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs/procesos_bk/pro_copiado_masivo_mesas_de_examen__20241226_120703___9781/", 0777, true);
ei_arbol(error_get_last(), 'error_get_last');

Saludos.

Le pregunte al ChatGPT:

mkdir(‘/mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs/procesos_bk/pro_copiado_masivo_mesas_de_examen__20241226_120703___9781/’, 0777, true) devuelve false en PHP 7.4, por que?

Respuesta:

El uso de mkdir() en PHP devuelve false si no logra crear el directorio. Aquí te dejo una lista de posibles razones por las que podría fallar y cómo resolverlas:


1. Problemas de permisos

  • Es posible que el proceso de PHP no tenga permisos suficientes para crear directorios en la ruta especificada.

Solución:

  • Verificá y ajustá los permisos de los directorios padres:
    sudo chmod -R 777 /mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs
    
  • También podés asegurarte de que el usuario que ejecuta PHP sea el propietario:
    sudo chown -R www-data:www-data /mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs
    

2. El directorio padre no existe

  • Aunque mkdir() con el parámetro true para recursive intenta crear todos los directorios necesarios, si alguna carpeta intermedia no tiene permisos o no existe en una ruta accesible, fallará.

Solución:

  • Verificá que toda la ruta exista y sea accesible:
    ls -ld /mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs
    
  • Asegurate de que los directorios padres tengan al menos permisos rwx (lectura, escritura y ejecución) para el proceso de PHP.

3. Problemas con el sistema de archivos

  • Si /mnt/datos es un sistema de archivos montado con permisos restringidos, mkdir() podría fallar.

Solución:

  • Verificá las opciones de montaje del sistema de archivos:
    mount | grep /mnt/datos
    
  • Asegurate de que el sistema de archivos esté montado con permisos de escritura.

4. Ruta inválida

  • Caracteres especiales o nombres reservados en la ruta pueden causar problemas.

Solución:

  • Revisá la ruta para asegurarte de que no tenga errores de tipeo ni caracteres inválidos.
  • Asegurate de que el nombre del directorio sea válido en el sistema de archivos.

5. Ya existe un archivo con el mismo nombre

  • Si un archivo (no un directorio) tiene el mismo nombre que uno de los directorios en la ruta, mkdir() fallará.

Solución:

  • Verificá si existen conflictos:
    ls -l /mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs
    

6. Restricciones en PHP o modo seguro

  • Aunque el modo seguro está obsoleto, otras configuraciones de PHP, como open_basedir, podrían estar bloqueando la escritura en ciertas rutas.

Solución:

  • Revisá la configuración open_basedir en tu entorno PHP:
    php -i | grep open_basedir
    
  • Asegurate de que la ruta esté incluida en las permitidas.

Consejos para depurar:

  1. Registrá el mensaje de error exacto:

    $path = '/mnt/datos/siu/guarani/3.20.1.1/instalacion/i__produccion/p__guarani/logs/procesos_bk/pro_copiado_masivo_mesas_de_examen__20241226_120703___9781/';
    if (!mkdir($path, 0777, true)) {
        error_log('Error al crear el directorio: ' . $path . ' - ' . json_encode(error_get_last()));
    }
    
  2. Probá con rutas más simples para aislar el problema:

    mkdir('/mnt/datos/test_directory', 0777, true);
    

Hola Leonel, te cuento que el área de sistemas completó el backup y comenzó con los pasos de la instalación. Sin embargo, nos encontramos con que el disco del servidor está con su 100 % de uso.
Creemos que esto podría estar ocasionando el problema que estamos viendo. Al revisar, notamos que la carpeta /mnt/datos/siu/3w/3.20.1/instalacion/log/des01 contiene cerca de 6 millones de archivos “log”. ¿Sería posible eliminar
estos archivos para liberar espacio en el disco y continuar con la instalación?

Si, podes eliminarlos, o hacer un backup de los mismos en otro almacenamiento.
Para producción podes modificar el nivel de log a que solo registre errores y no todo para que no genere tantos, revisa Nivel de log, en www/aplicacion.php:

define("apex_pa_log_archivo_nivel", 3);

Estimados, ante nada, feliz año nuevo a todos!! y les quería comentar que, para liberar espacio en el servidor (que estaba al 100%), eliminamos los logs más antiguos de la carpeta “/mnt/datos/siu/3w/3.20.1/instalacion/log/des01”, y sin haber realizado aún los cambios en el SIU de instalación, probamos una copia masiva de las mesas de exámenes y funcionó correctamente.*
Los logs antiguos fueron comprimidos y guardados en otra ubicación. La consulta es: ¿podemos eliminarlos definitivamente o es necesario conservarlos?*

Me alegro que lo pudieron solucionar.
Mira, los logs se podrían eliminar, nosotros solemos pedirlos en caso de algún error.
Aunque lo hayan resuelto igualmente hace lo que te decía en los anteriores mensajes, ya que esta mal que la carpeta quede instalacion/i__produccion, te va a traer problemas como los que ya reportaron en otros foros.

Saludos y buen 2025.

Al revisar, notamos que la carpeta /mnt/datos/siu/3w/3.20.1/instalacion/log/des01 contiene cerca de 6 millones de archivos “log”.

Me estoy dando cuenta que en Autogestión es el problema, la solución es similar, en instalacion/config.php configuras 'nivel' => log::NIVEL_ERROR, para que solo genere logs en caso de error.