El equivalente de Python os.execvp para PHP
-
07-07-2019 - |
Pregunta
Tengo un programa de línea de comando PHP ejecutándose. Y quiero conectarme a un shell mysql directamente desde PHP. He hecho esto antes en Python usando os.execvp Pero no puedo hacer que lo mismo funcione en PHP.
He probado las siguientes funciones:
- sistema
- passthru
- ejecutivo
- shell_exec
ejemplo:
system('mysql -u root -pxxxx db_name');
Pero todos parecen esperar a que mysql salga y devuelva algo. Lo que realmente quiero es que PHP lance el shell mysql y luego lo salga solo. alguna idea?
Solución
Si desea que los comandos de shell sean interactivos, use:
system("mysql -uroot -p db_name > `tty`");
Eso funcionará para la mayoría de los casos, pero se romperá si no estás en una terminal.
Otros consejos
Proporcione a MySQL un script para ejecutar que esté separado del script PHP:
system('mysql -u root -pxxxx db_name < script.mysql');
Además de lo que dijo acrosman, también puede usar el interruptor -e
para pasar SQL desde la línea de comandos.
$sql = ".....";
system("mysql -u root -pxxxx db_name -e \"$sql\"");
Además, espero que realmente no se conecte a la base de datos como root desde una aplicación PHP.