php exec ping

PHP: ¿Por qué exec() no devuelve salida?



ping (2)

Debería redirigir stderr a stdout.

Para hacer eso, cambia tu llamada exec () de esta manera:

exec("ping -c 1 $domain_bad 2>&1", $output, $return_var);

Más información sobre 2>&1 here .

Estoy escribiendo un script PHP para usarlo para verificar las conexiones de red con el comando de shell de Linux ping llamándolo con el exec() PHP:

<?php // Bad IP domain for testing. $domain_bad = "lksjdflksjdf.com"; $ip_address = $domain_bad; exec("ping -c 1 $domain_bad", $output, $return_var); var_dump($return_var); echo "return_var is: $return_var" . "/n"; var_dump($output); exit; ?>

No obtengo el resultado del mensaje de error de ping en $output que es lo que espero:

$ php try.php ping: unknown host lksjdflksjdf.com int(2) return_var is: 2 array(0) { }

Si el dominio es un buen dominio, como yahoo.com, entonces $output tiene el resultado de ping en una matriz. Pero si se trata de un error como ''ping: unknown host lksjdflksjdf.com'' no se devuelve a la matriz $output .

¿Por qué sucede esto y hay un método mejor para hacer esto?


Si la respuesta anterior no pudo resolver su problema, tal vez exec() esté deshabilitado. Puede intentar verificar el archivo php.ini en la línea disabled_functions .