php - retval - como ocultar la salida del sistema()
system php ejemplos (3)
En general, si desea evitar que salga algo al navegador, puede usar ob_start () antes de que su sistema () llame y luego ob_end_clean (). Ver http://php.net/manual/en/function.ob-start.php
Estoy trabajando en Windows XP. Puedo ejecutar con éxito un comando system () a través de mi navegador llamando a un script TCL que automatiza una sesión ssh. También devuelvo un valor del script. Sin embargo, mi problema es que el script descarga toda la sesión ssh en el navegador.
mi script php se ve como
$ lastline = sistema (''"C: / tcl / bin / tclsh.exe" / ruta al archivo / filename.tcl''. $ username. ''''. $ pass, $ val);
nombredearchivo.tcl:
spawn plink -ssh $ usuario @ $ host
espera "assword:"
enviar "$ pass / r"
esperar "/ prompt: / ->"
set $ return_value [string compare /..string../ $ expect_out (buffer)]
/..algo código ... esto funciona bien /
salir $ return_value
todo funciona bien y recupero $ return_value correctamente, pero el archivo php imprime el resultado de la ejecución de toda la sesión ssh en mi navegador, que se parece a lo siguiente:
Usando el nombre de usuario "admin". Contraseña de [email protected]: === / * texto * / === / prompt: / -> ... / algo de texto /
Quiero evitar que la función system () imprima esto en mi navegador
He utilizado la función shell_exec () pero devuelve el resultado completo de la sesión ssh (que he analizado en el script tcl y obtuve un valor preciso para volver al script php) ¿hay alguna manera de hacerlo sin usar shell_exec () pero usando system () en su lugar
gracias por adelantado
La documentación para system () dice específicamente:
Ejecuta un programa externo y visualiza la salida.
En esa página se enumeran alternativas. Si utiliza la función exec en su lugar, solo ejecutará los comandos sin mostrar ningún resultado.
Ejemplo:
<?php
echo "Hello, ";
system("ls -l");
echo "world!/n";
?>
mostrará la salida del system
:
$ php -q foo.php
Hello, total 1
-rw-r--r-- 1 bar domain users 59 Jul 15 16:10 foo.php
world!
durante el uso de exec
no mostrará ninguna salida:
<?php
echo "Hello, ";
exec("ls -l");
echo "world!/n";
?>
$ php -q foo.php
Hello, world!
utilizar ob_start (); antes y ob_clean (); después de llamarlo
http://sandbox.phpcode.eu/g/850a3.php
<?php
ob_start();
echo ''<pre>'';
$last_line = system(''ls'');
ob_clean();
echo ''nothing returned!'';
?>