working passthru not from example ejecutar desde php exec

not - php exec vs passthru



Comprobando que exec() se ejecuta con éxito o no (3)

He estado tratando de avisar si el comando exec() en php se ejecuta con éxito o no, por lo que puedo hacer eco de ciertos mensajes en consecuencia. Intenté el siguiente fragmento de código, pero el problema es que si exec() ejecuta correctamente o no, siempre echo "PDF not created" y nunca echo pdf creado correctamente. Le ruego que me haga saber cómo puedo realizar la comprobación de la ejecución de exec () para que pueda repetir los mensajes en consecuencia Gracias,

<?php if (exec(''C://abc//wkhtmltopdf home.html sample.pdf'')) echo "PDF Created Successfully"; else echo "PDF not created"; ?>


De acuerdo con el exec quickref de PHP, puede pasar punteros para obtener la salida y el estado del comando.

<?php exec(''C://abc//wkhtmltopdf home.html sample.pdf'', $output, $return); // Return will return non-zero upon an error if (!$return) { echo "PDF Created Successfully"; } else { echo "PDF not created"; } ?>

Si desea enumerar los posibles errores, puede encontrar los códigos en hiteksoftware


La forma correcta es verificar que $ return_var no se haya establecido en cero porque solo se establece en cero cuando se realiza correctamente. En ciertos casos, el exec puede fallar y el return_var no está configurado para nada. Por ejemplo, si el servidor se quedó sin espacio en disco durante el exec.

<?php exec(''C://abc//wkhtmltopdf home.html sample.pdf'', $output, $return_var); if($return_var !== 0){ // exec is successful only if the $return_var was set to 0. !== means equal and identical, that is it is an integer and it also is zero. echo "PDF not created"; } else{ echo "PDF Created Successfully"; } ?>

Nota: no inicialice $ return_var en cero


Una muestra simple:

$ip = "192.168.0.2"; $exec = exec( "ping -c 3 -s 64 -t 64 ".$ip, $output, $return ); echo $exec; echo "<br />----------------<br />"; print_r( $output ); echo "<br />----------------<br />"; print_r( $return );

En caso de no hacer ping o ERROR. ( UNO )

---------------- Array ( [0] => PING 192.168.0.2 (192.168.0.2) 64(92) bytes of data. [1] => [2] => --- 192.168.0.2 ping statistics --- [3] => 3 packets transmitted, 0 received, 100% packet loss, time 2016ms [4] => ) ---------------- 1

En caso de éxito (ZERO)

rtt min/avg/max/mdev = 4.727/18.262/35.896/13.050 ms ---------------- Array ( [0] => PING 192.168.0.2 (192.168.0.2) 64(92) bytes of data. [1] => 72 bytes from 192.168.0.2: icmp_req=1 ttl=63 time=14.1 ms [2] => 72 bytes from 192.168.0.2: icmp_req=2 ttl=63 time=35.8 ms [3] => 72 bytes from 192.168.0.2: icmp_req=3 ttl=63 time=4.72 ms [4] => [5] => --- 192.168.0.2 ping statistics --- [6] => 3 packets transmitted, 3 received, 0% packet loss, time 2003ms [7] => rtt min/avg/max/mdev = 4.727/18.262/35.896/13.050 ms ) ---------------- 0