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

Solved: Warning: implode(): Invalid arguments passed in /var/www/api/core/grace.php on line 85 #112

Closed zerodiscount closed 3 years ago

zerodiscount commented 4 years ago

Describa el problema (bug) Una descripción clara de cual es el problema. Prueba de la API para la integración. Instalado usando docker compose, así como la construcción manual de un servidor de LAMP. En la primera comprobación para ver si la API está funcionando: "http://ejemplo.domain.com/api.php?w = ejemplo & r = hola"; obtenemos el siguiente mensaje de error:

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

En ambas instalaciones, el directorio api está instalado correctamente en / var / www y / var / www / html tiene todos los archivos www públicos del git. Settings.php se actualizó manualmente para señalar correctamente la ubicación del directorio api como "../api/".

En ambas instalaciones, la instalación o el primer inicio de la API no crearon un directorio llamado "/ api / logs".

*Pasos para reproducir** Pasos para reproducir

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

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

Sistema operativo: Cambiar por el S.O. (Windows, Linux, etc) Ubuntu 18.04

PHP versión: Cambiar por versión PHP. php7.2

MySQL versión: Cambiar por versión MySQL. mariadb 10.1

Comportamiento esperado Lo que debería pasar.

Capturas de pantalla o registro de bitácora Si aplica, por favor adjuntar capturas, registros de logs con mensajes de error o XML (lo puedes subir a https://gist.github.com y nos compartes el enlace).

Contexto adicional Cualquier otro contexto acá.

JeanCarlosChavarriaHughes commented 4 years ago

Parece que las variables de settings.php no están bien configuradas o el servidor no logra encontrarlas, excepto el coreInstall. Le pasa igual si realiza la instalación sin usar Docker? Acaba de instalarlo nuevamente y me funciona bien.

Joseph-Logan commented 4 years ago

Lo que está ocurriendo es que al implode no le están llegando los parámetros correctos, el problema está en la variable global que se encuentra en el método, ya que no es un arreglo

Solución: que esa variable deje de ser global dentro del método e igualarlo a un arreglo vacío y darle permisos de lectura y escritura a tu carpeta para que fopen funcione correctamente

zerodiscount commented 3 years ago

Gracias por su explicación @logan0611 , es correcta. La función de implosión en php requiere que $ grace_logMsgs sea una array. Entonces, además de crear una carpeta de registros en API, dando la propiedad de esa carpeta a www-data (para apache), también tuve que agregar una línea al comienzo de grace.php como se muestra a continuación: $ grace_logMsgs = array(); Esto elimina la advertencia.