Подтвердить что ты не робот

Проверка exec() выполняется успешно или нет

Я пытаюсь сообщить, знаю ли команда exec() в php успешно или нет, поэтому я могу соответствующим образом откликнуться на определенные сообщения. Я попробовал следующий фрагмент кода, но проблема с ним заключается в том, что exec() работает успешно или нет всегда echo "PDF not created" и никогда не успешно создается echo pdf. Пожалуйста, дайте мне знать, как я могу выполнить проверку выполнения exec(), чтобы я мог эхо-сообщения соответственно Спасибо,

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

Ответ 1

Согласно PHP exec quickref, вы можете передать указатели, чтобы получить вывод и статус команды.

<?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";
}
?>

Если вы хотите перечислить возможные ошибки, вы можете найти коды на hiteksoftware

Ответ 2

Правильный способ - проверить, что $return_var не был установлен в ноль, потому что он установлен только в ноль, когда он успешно. В некоторых случаях exec может сбой, и return_var не настроен ни на что. Например. если на сервере закончилось свободное место на диске.

<?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";
}

?>

Примечание: не инициализируйте $return_var равным нулю

Ответ 3

Простой пример:

$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 );

В случае не ping или ERROR. (ONE)

----------------
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

В случае успеха (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