problema neofunctions.php y config.php en directorio remoto (docker) - Forum

Forum Navigation
You need to log in to create posts and topics.

problema neofunctions.php y config.php en directorio remoto (docker)

Hola gente.

Estoy intentando hacer funcionar una app de Visualneo en un server armado con docker. Dentro de docker tengo un contenedor de mysql, y otro formado a partir de una imagen de apache con php. Cuando pongo la app en el contenedor de apache levanta sin problemas pero no logo conectarme con la base de datos. Sé que es un tema con visualneo ya que he intentado con un PHP común y si que llego bien colocando  la ip del host donde se encuentra la base de datos:

$host = "172.22.1.4";

Si hago lo mismo en el config.php de la app de Visualneo no logro llegar a dicha base. Según tengo entendido el archivo neofunctions.php debería estar junto a la app cuando se trata del mismo host en el que esta la base de datos, pero en este caso que la base esta en otra parte,
¿debería tener dicho archivo en el mismo server que la base?, de ser ese el caso ¿también debería tener el config.php junto a él?¿debería colocar neoPhpSetPath con el destino exacto donde se encuentra el archivo en la app?.

 

Desde ya muchas gracias!

@palamar
No se si entiendo bien la situación.
¿Donde está alojada tu aplicación y dónde lo está la base de datos?
config.php y neofunctions.php deben estar ambos juntos. Si tu index.html está ejecutándose desde un lugar diferente del lugar donde están config.php y neofunctions.php, entonces debes indicarlo ustilizando neoPhpSetPath.
Asegúrate ta,bién de descomentar esta linea en config.php para permitir accesos desde un origen diferente:

header("Access-Control-Allow-Origin: *");

Saludos.

Pues he intentado pero no logro hacerla funcionar. Si que funciona con un Php de conexión común. No sé si habrá alguien con conocimiento en Docker que me pueda dar una mano. La app esta alojada en un contenedor y la base de datos en otra pero todo dentro de una misma red virtual de Docker. Entre Phpmyadmin y la base de datos hay comunicación. El problema viene cuando desde el contenedor que tiene la app con neoPhpSetPath le doy la ruta al neofunctions.php que esta en el otro contenedor que tiene Mysql, simplemente el error de consola es 404, que no puede encontrar el archivo neofunctions.php. Intente ya varias cosas como cambiar los php al contenedor de la base y buscándolo con neoPhpSetPath pero nada, intenté tenerlos en el mismo server cambiando el host dentro del config dandole el Ip del contenedor de la base pero nada. La única que puede llegar a funcionar es tener todo dentro del mismo contenedor pero no me parece adecuando ya que no podría tener un correcto control de la base de datos (que si tengo con un contenedor solo para mysql)

Bueno a ver,  organizándome, así esta mi docker:

1)Contenedor con base de datos mysql

2) Contenedor phpmyadmin

3) Contenedor apache+php

Todos los contenedores se "Ven" a través de una red virtual de Docker por los que todos tienen su propia ip. He podido corroborarlo ya que desde el contenedor 3 puedo correr un Php y acceder a una base de datos del contenedor 1. Además de eso el contenedor 2 esta perfectamente administrando las base de datos del contenedor 1.

Ahora bien, si coloco mi app en el contenedor 3 todo funciona correctamente excepto lo que corresponde a base de datos. Ambos archivos php están junto a la app. En la línea del config.php :

$dbServerNames[0]="localhost";

Donde dice localhost he indicado la IP que corresponde al contenedor 1 de mysql. Pruebo pero la base de datos no levanta. He probado llevar los archivos php hacia el contenedor de mysql, dirigirlo con la opción de visualneo y descomentar la linea mencionada pero nada.

Sospecho que VisualNeo tiene algún problema con Docker, de tal manera que para hacerlo funcionar hay que levantar un contenedor con todo incluído, de ser así sería una pena ya que se pierde un poco la "magia" de los contenedores.

@palamar

Prueba a poner el nombre del contendor de mysql en el config.php

Lo intenté, incluso intenté ponerle el puerto 3306 que es el de ambos (Host y contenedor) pero nada. Gracias por el dato igual.

Me pregunto si tendrá que ver la versión de base de datos que estoy usando para con VisualNeo. En este momento la mysql:8.4.0. Lo que si puedo ver es que el Php funciona ya que por ejemplo puedo hacer un Login con las credenciales propuestas en el config.php.

@palamar, echa un vistazo a este hilo:

https://visualneo.com/forum/topic/small-problem-with-neophp-user-level

Es posible que la versión actual de neoPhp no funcione correctamente en servidores remotos desde una app local.

Hola @luishp no sé si será exclusivamente mi caso. Lo que yo tengo es la base de datos en remoto, pero ambos php se encuentran como siempre juntos en la carpeta de la app. Si con esto último te refieres cuando decís "App local" pues entonces sería mi caso. Lo último que probé es dejar todo como esta y modificar solamente el Config.php en la parte que hace referencia a localhost (donde se encontraría la base normalmente) para cambiarlo por el IP del contenedor que tiene mi base de datos y sí que funciona el sistema para loguearse pero la base no la ve. Lo curioso de todo esto es que no hay error en la consola del navegador, como si todo estuviera correcto. Si pongo todo en un mismo server app+php+base el programa funciona correctamente.

Veo que de ese hilo salió un plugin nuevo pero no estoy seguro si debo usarlo tal cual.

Saludos!

Parece ser que a mi no me funciona siquiera poniendo el -1 en las consultas del config.php lo cual hace que VisualNeo directamente no este funcionando con Docker, al menos para mi. Hice muchas pruebas pero pienso que la única manera de que funcione es montar todo en un contenedor (Mysql, apache y php) para que en el php pueda utilizar localhost.  Sí que funciona el Logueo del usuario pero las consultas a la base no. Voy a estar probando todo en un solo contenedor como dije pero desde ya es una pena que esto suceda. He estado probando también hacer una app directamente con javascript y un backend de Python y pruebas solo con PHP para conectar y  funcionan correctamente.

@palamar si tienes la base de datos en remoto y los archivos .php locales, debes dar permiso de acceso remoto en el host de la base de datos a la IP desde donde haces las peticiones. Es muy posible que sea eso lo que está bloqueando las consultas.
La forma de hacerlo depende de tu host. Yo tengo experiencia con cPanel y sistemas similares pero no con Docker.

Quote from luishp on November 3, 2024, 9:06 pm

@palamar si tienes la base de datos en remoto y los archivos .php locales, debes dar permiso de acceso remoto en el host de la base de datos a la IP desde donde haces las peticiones. Es muy posible que sea eso lo que está bloqueando las consultas.
La forma de hacerlo depende de tu host. Yo tengo experiencia con cPanel y sistemas similares pero no con Docker.

Después de unos días intentando, no llegue a buenos resultados. Logré tocar el parámetro para dar permiso tanto en el archivo my.cnf (adress bind) y en el usuario de la base de datos pero aún así mi app hecha en VisualNeo no puede comunicarse con el host. Cualquier otra rutina de conexión en php sí que se conecta. El login también anda bien pero en cuanto  a las consultas ninguna funciona. Si pongo la misma app en un server Xampp por ejemplo, en el host sí que funciona correctamente. Así que sin ánimo de ser extremista pero diría que por ahora Visualneo no esta funcionando con Docker, algo extraño ya que se trata de PHP. Dejo acá la inquietud en caso de que alguien experimente me tenga en cuenta y coloque si es que se da el caso la solución por acá. Saludos!

Open chat
1
Do you need more info?
Hi, do you have any doubt?