Intereting Posts
Почему, если условие не работает? $ _SERVER . $ _SERVER Как развернуть laravel 4.2 на совместном хостинге? Как я могу использовать различные XML-библиотеки PHP для получения DOM-подобных функций и предотвращения уязвимостей DoS, таких как Billion Laughs или Quadratic Blowup? PHP «preg_replace», чтобы добавить параметр запроса к любым URL-адресам определенного домена Извлечение последнего сегмента в URI Многоязыковая интеграция Ассоциативный массив, значения суммы одного и того же ключа Функция php для отмены заданных переменных Использовать Composer без Packagist Как получить чистые URL-адреса только для двух переменных? Сортировка многомерного массива в PHP с несколькими критериями Уничтожить сеанс PHP при закрытии Удаление дубликатов записей без создания временной таблицы Использование javascript и PHP для разработки собственных приложений для Android Не удалось отправить Push-уведомление

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

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

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

Согласно 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

Правильный способ – проверить, что $ 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 равным нулю

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

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

В случае отсутствия пинга или ОШИБКИ. ( ОДИН )

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