CRLibre / API_Hacienda

API libre para Factura Electrónica en Costa Rica, interfaz para integrar sistemas con el Ministerio de Hacienda para la Facturación Electrónica
https://crlibre.org/factura-electronica/
GNU Affero General Public License v3.0
166 stars 122 forks source link

Error al subir certificados cuando se ejecuta con Docker #167

Closed achaconm2001 closed 4 months ago

achaconm2001 commented 4 months ago

Describa el problema (bug) Estoy siguiendo esta guía para subir un certificado https://github.com/CRLibre/API_Hacienda/wiki/Upload-del-certificado-o-llave-criptogr%C3%A1fica En lugar de recibir el JSON esperado, el API retorna un { resp: "-402" } Investigando un poco el API, creo que el error viene de aquí https://github.com/CRLibre/API_Hacienda/blob/3f0855f9ef672c0391f55d39c18f73e333877a86/api/modules/files/module.php#L255 y se reproduce por un error en la función move_uploaded_file de php. Al hostear el API por medio de Docker, creo que puede que haya algún problema con los permisos para escribir al directorio

Pasos para reproducir

  1. Tener una VM con Ubuntu 24.04 (LTS) x64
  2. Clonar el repositorio
  3. Ejecutar: docker-compose -f "docker-compose.yml" up -d --build
  4. Seguir los pasos para crearse una cuenta: https://github.com/CRLibre/API_Hacienda/wiki/Creaci%C3%B3n-de-Usuario
  5. Tratar de subir el certificado: https://github.com/CRLibre/API_Hacienda/wiki/Upload-del-certificado-o-llave-criptogr%C3%A1fica

Versión API: git log --pretty="%h" -n1 = 3f0855f

Sistema operativo: Ubuntu 24.04 (LTS) x64

PHP versión: php:7.4.9-apache (docker compose)

MySQL versión: mariadb:10.11.4 (docker compose)

Comportamiento esperado image

Capturas de pantalla o registro de bitácora Captura de pantalla 2024-06-30 030746

Contexto adicional Gracias :D

achaconm2001 commented 4 months ago

Hice una prueba con el API hosteada por ustedes: https://api-demo.crlibre.org/api.php y todo funcionó correctamente.

Tengo entendido que el https://api-demo.crlibre.org/api.php está pensada para que se realicen pruebas únicamente, no para ser utilizado directamente en producción. ¿Estoy en lo correcto? ¿Es posible o recomendado utiliza el API https://api-demo.crlibre.org/api.php en lugar de hostear el servidor uno mismo?

JeanCarlosChavarriaHughes commented 4 months ago

Hola Andrés @achaconm2001

En lugar de recibir el JSON esperado, el API retorna un { resp: "-402" }

Podrías confirmar que los permisos de escritura de directorio api y files estén habilitados. Adentro de la carpeta "api" hay una carpeta que se llama "files" Dale los permisos de escritura y a las subcarpetas.

¿Es posible o recomendado utiliza el API https://api-demo.crlibre.org/api.php en lugar de hostear el servidor uno mismo? No creo que sea recomendado, pues actualmente el servicio que mencionas solamente es un demo, no está pensado para ser usado en producción, no está activamente monitoreado, ni tiene mantenimiento. Lo correcto es que cada colaborador tenga su propio servicio en su propio servidor.

achaconm2001 commented 4 months ago

Hola @JeanCarlosChavarriaHughes gracias por su ayuda.

Las carpetas dentro del contenedor de docker no tenía los permisos necesarios. Ahora ya les actualicé los permisos y todo funcionando.

Sería buena idea actualizar el archivo build de Docker y agregar los permisos para el directorio. https://github.com/CRLibre/API_Hacienda/blob/dev/docker-php-apache/Dockerfile#L16 Después de esa línea, incluir RUN chmod -R 777 /var/www/api RUN chmod -R 777 /var/www/api/files

Gracias por su ayuda

JeanCarlosChavarriaHughes commented 4 months ago

Hola, @achaconm2001 Perfecto que ya pudo resolver el issue.

Podrías por favor crear el PR con el fix que mencionas, y me asignas para revisarlo y agregarlo al branch de develop dev. Saludos.