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 123 forks source link

No carga el API #94

Closed PeterPedro closed 1 year ago

PeterPedro commented 5 years ago

Describa el problema (bug) Buenas, no he logrado cargar la API en mi servidor, he intentado en IIS y en XAMPP en Windows.

Pasos para reproducir

  1. Ir a http://192.168.100.138/www/api.php
  2. Me aparece el mensaje... "No se ha encontrado la carpeta de "api", por favor verifica la configuración $config['modules']['coreInstall'] en "settings.php"."

Versión API: Lea como obtener la versión del API https://github.com/CRLibre/API_Hacienda/blob/master/VERSION.md

No sé la versión porque el API no carga y las instrucciones para conocer la versión requieren que cargue. Lo descargué el lunes 11 de noviembre 2019.

Sistema Operativo: Windows 10

PHP versión: 7.1.32

MySQL versión: 10.4.6-MariaDB

Comportamiento esperado Conectarse al API y mostrar este mensaje... "{"resp":"Module not found"}", o este mensaje... "{"resp":"hola :)"}" en caso de enviarle los parámetros "?w=ejemplo&r=hola"

Capturas de pantalla o registro de bitácora Clipboard01

Clipboard02

Contexto adicional He intentado poner los paths en "$config['modules']['coreInstall']" en todas las maneras que conozco... ../api/ ../../api ..//api// ..\api\ y otras mas.

He intentado poner la carpeta api en paths distintos, incluso dentro de la carpeta www, no importa lo que haga no logro que el API me cargue.

Tanto IIS como XAMPP muestran el mismo mensaje.

JeanCarlosChavarriaHughes commented 5 years ago

@PeterPedro Yo lo tengo en setting.php: $config['modules']['coreInstall'] = "../api/";

Mi estructura de archivos es:

.
├── api
│   ├── contrib
│   ├── core
│   ├── errors
│   ├── files
│   ├── install
│   ├── modules
│   ├── resources
│   └── tools
├── composer.json
├── _config.yml
├── INSTALL.md
├── LICENSE
├── Procfile
├── README.md
├── recursos
│   ├── API CRLibre.postman_collection V3.1.json
│   ├── creaFE.php
│   ├── creaMAC.php
│   ├── creaNC.php
│   ├── creaND.php
│   ├── Documento-API-Instalacion-CRLibre.docx
│   ├── genID12Digitos.php
│   ├── sql
│   └── Tablas para Facturador CRLibre.sql
├── THANKS
├── VERSION.md
└── www
    ├── api.php
    ├── composer.json
    ├── composer.phar
    ├── index.php
    ├── settings_original.php.dist
    ├── settings.php
    ├── settings.php.dist
    ├── settings.php.secret
    ├── vendor
    └── xsd
PeterPedro commented 5 years ago

Ah gracias por responder, aún no logro hacer que me funcione, para confirmar es el archivo "settings.php" que se encuentra en la carpeta www? Es que a mí me aparece en la línea 87 esto: "$config['modules']['coreInstall'] = getenv('../api/');"

No esto: "$config['modules']['coreInstall'] = "../api/";" como usted me muestra en su respuesta.

Si elimino el getenv() me muestra un mensaje de error. "La informacion json enviada contiene errores."

JeanCarlosChavarriaHughes commented 5 years ago

Tendrías que revisar cuales errores está encontrando. Con el servidor por ejemplo si esta usando Apache, con los logs de Apache.

JeanCarlosChavarriaHughes commented 5 years ago

o si lo ve más fácil con Docker, podría tratar revisando este PR, a mí me está funcionando bien los dos enfoques: https://github.com/CRLibre/API_Hacienda/pull/84

PeterPedro commented 5 years ago

Si, los errores suceden porque yo cambié el código para que se viera como el de su ejemplo pero lo que me parece es que yo estoy usando Branch master y usted el Branch dev talvez? Lo supongo porque el getenv() sólo aparece en el master.

O sea será que yo no debería usar el Branch master?

PeterPedro commented 5 years ago

Por cierto, con el Branch dev no tengo problemas en cargar el API, mi problema sucede solamente con el Branch master

JeanCarlosChavarriaHughes commented 5 years ago

@PeterPedro cuáles errores le muestra cuando quita el getenv() ? Debería funcionar el master, a mí me está funcionando. Igualmente el getenv() puede estar o no, eso no es obligatorio.

El error tienes que revisar con los logs, es muy difícil adivinar sin los logs. Es posible que este enviando: emisor_tipo_intendif en vez de emisor_tipo_identif. O alguno de los otros arreglos que se hicieron para 4.3, los medios de pago por ejemplo.

PeterPedro commented 5 years ago

Cuando elimino el getenv() (solamente el del "$config['modules']['coreInstall']")

y hago: http://localhost/www/api.php El error es "La informacion json enviada contiene errores."

Cuando hago: http://localhost/www/api.php?w=ejemplo&r=hola El mensaje es:

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 19 of the JSON data

{"resp":"hola :)"}<br />
<b>Warning</b>:  implode(): Invalid arguments passed in <b>C:\xampp\htdocs\api\core\grace.php</b> on line <b>85</b><br />
<br />
<b>Warning</b>:  fopen(../api/logs/wirez_19_11_21_11.txt): failed to open stream: No such file or directory in <b>C:\xampp\htdocs\api\core\grace.php</b> on line <b>88</b><br />

Apache no me muestra errores en los logs.

PeterPedro commented 5 years ago

Por si alguien más está con este problema he logrado arreglarlo un poco, no sé cual será exactamente mi problema pero ya por lo menos logro que me cargue el mensaje de hola en el branch master.

Intenté en Linux pero tuve exactamente el mismo problema, ceo que puede haber algún pequeño problemita con el sistema de archivos en la API pero lo que estoy haciendo es esto:

1) Eliminar la función getenv() en settings.php línea 87

2) Crear la carpeta api/logs (con permisos para crear y borrar archivos)

3) Despues dentro de la carpeta "logs" crear el archivo TXT con el nombre que se muestra en el error, por ejemplo "wirez_19_11_21_11.txt"

4) Asegurarse que el TXT tiene permisos de escritura

5) En api/core/grace.php comentar la línea 85 así "#$grace_logMsgs = implode("\n", $grace_logMsgs) . "\n";"

No sé que tan necesaria sea esa línea, si será solo para la creación de logs pero por lo menos ya puedo probar la API.

spartanox commented 3 years ago

@PeterPedro, supongo que actualmente ya has solucionado este problema, pero para aquellas personas que están empezando a utilizar esta API les recomiendo realizar lo siguiente:

Agregar las variables de entorno que le hacen falta. Estas variables de entorno son las que estan dentro del archivo llamado settings.php, después de las variables de entorno que configuran la base de datos y antes del mensaje You should not need to touch anything beyond this point. Los valores que pueden tener estas variables de entorno son los mismos de los que se encuentran en el archivo llamado settings_original.php.dist a excepción de $config['crypto']['key'] y de $config['core']['host']

Para aquellas personas que levantaron la API a través de docker, es básicamente realizar lo mismo, pero para agregar las variables de entorno deben de modificar el archivo docker-compose

JeanCarlosChavarriaHughes commented 1 year ago

Hola . Puedes revisar este PR. Atiende el problema de docker que no funciona bien debido a la existencia de settings.php https://github.com/CRLibre/API_Hacienda/pull/161

@spartanox @PeterPedro