Как напечатать сообщения об ошибках shell_exec () в браузере? - PullRequest
0 голосов
/ 12 июля 2019

Мне нужно устранить неполадки в примере кода, но, похоже, не удается найти ошибку.

$date = $_POST['date'];
$strcommand = "python3 python.py ".$date.""; //date argument is passed to python 
echo $strcommand;
$command = shell_exec($strcommand);
echo $command; //proceeds a lot of calculations and then sends an automatic mail with python

При использовании этого примера кода питон будет работать, но письмо не будет отправлено . Я могу сказать, что он работает, потому что python возвращает print() операторов, которые отображаются в браузере. Однако, когда возникает ошибка, я не получаю сообщение об ошибке из системы!

Вот как я попытался определить ошибку: я скопировал команду $ str из браузера и ввел ее в командной строке (только заменив $date соответствующей строкой) , в том же каталоге где файл php, и угадайте, что, питон работал как положено, и письмо было отправлено.

Как определить эту ошибку?

1 Ответ

1 голос
/ 12 июля 2019

Если сообщения об ошибках печатаются со стандартной ошибкой, а не со стандартным выводом, вам нужно перенаправить их, чтобы их можно было перехватить в PHP.

$date = escapeshellarg($_POST['date']);
$strcommand = "python3 python.py $date 2>&1";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...