Ejecutar comando toba

Señores.
Tengo este problema al tratar de ejecutar el comando toba luego de cargar el
…/sistemas$ ./entorno_toba.env

  1. …/sistemas$ . toba
    -bash: /usr/local/sistemas/vendor/siu-toba/framework/bin/toba: line 2: syntax error near unexpected token (' -bash: /usr/local/sistemas/vendor/siu-toba/framework/bin/toba: line 2: <?php require_once('launcher.php'); ?>’

  2. …/sistemas$ toba
    NO ME TIRA NINGÚN ERROR PERO NO ME MUESTRA LAS OPCIONES

Ya actualicé mi sistema ubuntu
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Versión del toba: 3.3.5

PROBÉ VARIAS SOLUCIONES PROPUESTAS EN INTERNET…PERO NINGUNA SOLUCIONA…

QUE PODRÍA SER EL PROBLEMA…?
Gracias.

Hola Serge,

te hago una consulta, se trata de una instalacion de cero o una instalacion de una version anterior que actualizaron a v3.3.5?
Fijate por favor si el archivo de entorno tiene un par de lineas finales donde haga un echo de algun mensaje.

2) ....../sistemas$ toba NO ME TIRA NINGÚN ERROR PERO NO ME MUESTRA LAS OPCIONES
Probablemente este saliendo algun error, solo que no por pantalla... debe estar quedando en el archivo de logs de PHP.
PROBÉ VARIAS SOLUCIONES PROPUESTAS EN INTERNET....PERO NINGUNA SOLUCIONA..
Cuales probaste? como para saber que no volver a preguntar o recomendarte algo que ya hiciste.

Saludos

te hago una consulta, se trata de una instalacion de cero o una instalacion de una version anterior que actualizaron a v3.3.5? Fijate por favor si el archivo de entorno tiene un par de lineas finales donde haga un echo de algun mensaje.
1- Es una instalación desde cero, que luego cargue todos los proyectos que tenia desarrollado en otras versiones. Están funcionando perfectamente en producción. 2- El archivo de entorno tiene dos lineas al final de "echo" pero están comentadas.
Probablemente este saliendo algun error, solo que no por pantalla... debe estar quedando en el archivo de logs de PHP.
1- Me fijé el archivo logs en /var/log/apache2 y no hay errores.
Cuales probaste? como para saber que no volver a preguntar o recomendarte algo que ya hiciste.
1- Ejecute desde el directorio raiz (/user/local/sistemas) composer update y me dejo de funcionar varias cosas. Tuve que volver atrás gracias a que tengo un backup de la maquina virtual. 2-Tambien mire si hay caracteres no imprimibles en los archivos con (cat -An toba) ......./bin$ cat -An toba
 1  #!/usr/bin/env php$
 2  <?php require_once('launcher.php'); ?>$

…/bin$ cat -An launcher.php

 1  <?php$
 2  if (! isset($_SERVER['TOBA_DIR'])) {$
 3      $toba_dir = realpath(__DIR__.'/../');$
 4      $path_autoload = '/vendor/autoload.php';$
 5  $
 6      if (! file_exists($toba_dir.$path_autoload)) {$
 7          //Estoy dentro del vendor/bin de composer$
 8          $path_autoload = '/../../..'. $path_autoload;$
 9  $
10          if (! file_exists($toba_dir.$path_autoload)) {$
11              die("No se encuentra la carpeta de Toba, ni la variable de entorno TOBA_DIR");$
12          }$
13      }$
14      $_SERVER['TOBA_DIR'] = $toba_dir;$
15  $
16      //Hago todas las rutas relativas a TOBA_DIR que es lo unico constante$
17      include(realpath($toba_dir . $path_autoload));                      //Necesito cargar el autoload de composer antes, sino no funca nada$
18      $path_env =  (stripos($toba_dir,  DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR) !== false)  ?  realpath($toba_dir . '/../../../')  : $toba_dir;$
19      if (file_exists($path_env. '/entorno_toba.env')) {$
20  ^Itry {$
21  ^I^I$dotenv = Dotenv\Dotenv::create($path_env, 'entorno_toba.env');$
22  ^I^I$dotenv->load();$
23  ^I^I//Chequeo que existan las variables correspondientes... deberia pero bue nunca esta de mas.$
24  ^I^I$dotenv->required(['TOBA_INSTANCIA', 'TOBA_INSTALACION_DIR']);$
25  ^I} catch (Dotenv\Exception\ValidationException $e) {$
26  ^I^Iecho 'Falta definir una variable de entorno que es requerida ' . PHP_EOL . $e->getMessage();$
27  ^I}$
28      }$
29  }$
30  $
31  require_once($_SERVER['TOBA_DIR'].'/php/consola/run.php');$

y no me parece que hayan caracteres no imprimibles que afecten…
No se me ocurre otra cosa…!

Hola Sergio,

barbaro queria descartar justamente esas dos lineas del final por si estaban evitando que se parsee correctamente el archivo de entorno al ejecutar el lanzador.

1- Me fijé el archivo logs en /var/log/apache2 y no hay errores.
Esto es linea de comandos... no van a aparecer en el log de Apache, fijate en el [b]php.ini[/b] para CLI si esta fijada la entrada [b]error_log[/b], si no tiene un archivo especifico ahi o esta comentada, deberia ir al syslog por defecto, ese seria el lugar a verificar.
1- Ejecute desde el directorio raiz (/user/local/sistemas) composer update y me dejo de funcionar varias cosas. Tuve que volver atrás gracias a que tengo un backup de la maquina virtual.

Todo lo que sea comandos de composer los tenes que llevar adelante dentro de la carpeta del proyecto que estas instalando/actualizando, para que te baje las dependencias alli dentro (incluido Toba).

Me parece (mirando los notice del msg previo) que el tema viene por como estas instalando las cosas y eso genera algunas complicaciones.

Dentro de /usr/local/sistemas/ deberia haber una carpeta por cada proyecto y dentro de esos proyectos realizas la ejecucion de composer.

La otra forma era tener la instalacion de Toba por fuera de los proyectos y luego incrustarle los mismos dentro… que seria el esquema que dejamos atras al pasar a la version 3.0… pero tampoco seria tu caso, te quedo un esquema raro dentro de /usr/local/sistemas.

Lo mejor es tratar de rastrear que error esta saliendo y a partir de ahi ver como solucionarlo, sino estamos navegando a ciegas.

Saludos

Esto es linea de comandos... no van a aparecer en el log de Apache, fijate en el php.ini para CLI si esta fijada la entrada error_log, si no tiene un archivo especifico ahi o esta comentada, deberia ir al syslog por defecto, ese seria el lugar a verificar.
Cree un archivo php_errors.log en /var/log con todos los permisos y habilité en php.ini el acceso a dicho archivo y comenzó a grabar los errores. Pero solo son erreres de tipo "Notice" y "Warning", nada grabe para que no funcione el toba desde linea de comandos.
Todo lo que sea comandos de composer los tenes que llevar adelante dentro de la carpeta del proyecto que estas instalando/actualizando, para que te baje las dependencias alli dentro (incluido Toba).

Me parece (mirando los notice del msg previo) que el tema viene por como estas instalando las cosas y eso genera algunas complicaciones.

Dentro de /usr/local/sistemas/ deberia haber una carpeta por cada proyecto y dentro de esos proyectos realizas la ejecucion de composer.

La otra forma era tener la instalacion de Toba por fuera de los proyectos y luego incrustarle los mismos dentro… que seria el esquema que dejamos atras al pasar a la version 3.0… pero tampoco seria tu caso, te quedo un esquema raro dentro de /usr/local/sistemas.


Entiendo. Lo que me despista un poco es que en Abril del 2020 cuando instale la versión 3.3.5 y cargue todos los proyectos el comando “toba” funcionaba perfectamente. Este año cuando necesito crear y cargar otros proyectos desde la linea de comandos no lo puedo hacer.
Luego de crear el archivo php_errors.log me apareció otro error al ejecutar “toba” desde cualquier directorio con el entorno levantado :
declare -x TOBA_DIR=“/usr/local/sistemas/vendor/siu-toba/framework”
declare -x TOBA_INSTALACION_DIR=“/usr/local/sistemas/vendor/siu-toba/framework/instalacion”
declare -x TOBA_INSTANCIA=“produccion”

  • toba
    PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 32768 bytes) in /usr/local/sistemas/vendor/paragonie/sodium_compat/src/Compat.php on line 1655

En este caso, modifique el memory_limit (Fatal error: Allowed memory size of - Toba - Desarrollo - Foro Comunidad SIU)en el php.ini tambien incremente el max_execution_time a 60.
[/list]

Y si ejecuto por ejemplo “. bin/toba” sigue el mismo error:

  • . bin/toba
    -bash: bin/toba: line 2: syntax error near unexpected token (' -bash: bin/toba: line 2: <?php require_once('launcher.php'); ?>’

Seguire mirando para ver si encuentro algo mas que pueda estar causando el error.
Richard, si se te ocurre otras alternativas…estoy atento.
Gracias. seguimos en contacto.

Hola Sergio,

tener un archivo de logs para cuando ejecutas cosas por linea de comandos es un buen punto, hoy solo te aparecen los notice y warnings… pero a futuro te puede loguear un fatal, o quizas entre esos notice pueda que este la causa de un problema, es una opcion para cuando existen cuestiones que no se registran en el log interno del framework.

Y si ejecuto por ejemplo ". bin/toba" sigue el mismo error:
  • . bin/toba
    -bash: bin/toba: line 2: syntax error near unexpected token (' -bash: bin/toba: line 2: <?php require_once('launcher.php'); ?>’

Creo que encontre el problema, se encuentra en la forma en que invocas el comando… ese punto que se encuentra previo a bin/toba opera como alias del comando “source”… .con lo cual le esta pasando el codigo fuente del lanzador al shell para que ejecute cada linea como si fuera un comando separado.

Es una pavada que se me paso desapercibida en tu primer post (corregi via zoom+ mi ceguera y encontre el punto), si probas con alguna de las siguientes formas seguro que funca de 10:

  • ./bin/toba
  • bin/toba

Basicamente nos complicamos buscando una causa extraña cuando era algo mucho mas sencillo, igual me vino bien como recordatorio para ir al oculista.

Saludos

Hola Richard.
De ambas formas ocurre el mismo error…

…/framework$ bin/toba

PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 32768 bytes) in /usr/local/sistemas/vendor/paragonie/sodium_compat/src/Compat.php on line 1655

framework$ ./bin/toba
PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 32768 bytes) in /usr/local/sistemas/vendor/paragonie/sodium_compat/src/Compat.php on line 1655

Te comento que ya incremente el memory_limit a 512MB en el php.ini

Hola Sergio,

esto es otro error, no tiene nada que ver con el que presentaste antes.

Por otro lado, en Linux tenes 2 archivos de configuracionn para PHP… uno para el webserver(apache2) y otro para la consola (CLI), en particular para este caso debes modificar el que se halla dentro de la carpeta CLI.

Podes saber que archivo ini se esta levantando ejecutando lo siguiente en la consola.


php -i  | more

Fijate que debajo de dicho ini file se explicitan tambien el resto de los archivos ini que se cargaron, por si la restriccion sobre el memory_limit se encuentra en algun otro.

Saludos

Hola Richard.

Es una pavada que se me paso desapercibida en tu primer post (corregi via zoom+ mi ceguera y encontre el punto), si probas con alguna de las siguientes formas seguro que funca de 10:
Parece que también iré al oculista...! ;-) Mira como estaba el php.ini: php/7.4/cli$ grep "memory_limit" /etc/php/7.4/cli/*.ini ;memory_limit = 256MB - valor por defecto memory_limit = 512MB

MODIFIQUE A memory_limit = 512M y quedó solucionado. Tengo otro error pero ya no es grabe y puedo navegar por la opciones del toba.

…/framework$ bin/toba
PHP Deprecated: Array and string offset access syntax with curly braces is deprecated in /usr/local/sistemas/vendor/siu-toba/framework/php/lib/toba_manejador_archivos.php on line 417


SIU-TOBA ( Ambiente de desarrollo WEB )

Versi�n: 3.3.5

Directorio de la INSTALACION: /usr/local/sistemas/vendor/siu-toba/framework

Comandos disponibles

instalacion Administracion de la INSTALACION
base Administracion de BASES de DATOS
instancia Administracion de INSTANCIAS
proyecto Administracion de PROYECTOS
personalizacion Administracion de PERSONALIZACIONES
test Ejecucion de baterias de TEST
servicios_web Administracion de servicios web

Haré las pruebas de crear proyecto y cargarlos a la instancia producción y te comento si queda todo bien.

PHP Deprecated: Array and string offset access syntax with curly braces is deprecated in /usr/local/sistemas/vendor/siu-toba/framework/php/lib/toba_manejador_archivos.php on line 417
Este nuevo error lo corregí editando el archvo en cuestion y reemplacé en la linea 417 las llaves "{}" por corchetes "[]" y quedó solucionado. Espero que no surjan mas errores a partir de esta modificación.

framework$ bin/toba instancia info


INSTANCIA: produccion

Informacion BASICA

±--------+
| VERSION |
±--------+
| 3.3.5 |
±--------+

Saludos cordiales y Gracias nuevamente.

Hola Sergio,

Lo mas interesante es la escala que tomo 512MB, no lo logro convertir a nada que de el nro que te reportaba como agotado (al menos segun Gugol).

Este nuevo error lo corregí editando el archvo en cuestion y reemplacé en la linea 417 las llaves "{}" por corchetes "[]" y quedó solucionado. Espero que no surjan mas errores a partir de esta modificación.

Si, ese notice se soluciono en versiones posteriores… te recomendaria que vayas directamente a 3.3.18, no creo que tengas inconvenientes de parte de los requerimientos y sumas varios fixes.

Saludos