Как передать ввод Python в PHP?

Хочу передать вывод (json массив) с print`а Python в переменную PHP
Также подаю данные для ввода в Python через sys.argv
Пробовал и execи shell_exec и passthru
<?php
$resss = shell_exec("python3 /var/www/html/mssql.py '19' '2020' '03' '27'");
echo $resss;
?>
также в конец shell_exec добавлял 2>&1, чтобы перехватить вывод

Но почему-то, если запускать через веб-сервер, то вылазят подобные ошибки
Traceback (most recent call last): File "/var/www/html/mssql.py", line 19, in CommonProceed, JsonForm = proceed.common_proceed(OrderCategory, year, month, day, GlobalShift, JsonForm) File "/var/www/html/proceed.py", line 29, in common_proceed ProceedSum = float(ProceedSum[0]) TypeError: float() argument must be a string or a number, not 'NoneType'

Если же выполнять эти команды через php -a
То все отрабатывает как нужно и получаю нужны вывод
php > $resss = shell_exec("python3 /var/www/html/mssql.py '19' '2020' '03' '27' 2>&1");
php > echo $resss;
{'CommonProceed': 144753.0, 'VISA': 76887.0, 'Cash': 31873.0, 'Coin': 2423.0, 'CoinDebet': 0.0, 'Cashless': 0.0, 'OtherCurrencies': [['ООО "КОМПАНИЯ"', 33570.0]], 'WaiterInfo': [['1000639', 'Атаев Давлет', 12671.0], ['1000748', 'Эркибаев Мухаммед', 22147.0], ['1000623', 'Исхакова Лилия', 13760.0], ['1000669', 'Караманов Давлет', 3473.0], ['1000612', 'Жахонгиров Равшан', 10206.0], ['1000635', 'Рустимов Фаррух', 47008.0], ['1000618', 'Асфандиярова Ландыш', 11442.0], ['1000630', 'Мусин Ратмил', 21623.0]], 'IsNull': 1, 'RestCategoryInfo': [['КУХНЯ', 101333.0], ['БАР', 43420.0], ['КАЛЬЯН', 0.0]]}

Что я неправильно делаю?
  • Вопрос задан
  • 485 просмотров
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
попробуйте поменять кавычки
$resss = shell_exec('python3 /var/www/html/mssql.py "19" "2020" "03" "27"');


Ну и вообще стоит посмотреть в питон скрипте что прилетает в sys.argv при запуске РНР скрипта через веб сервер
print(sys.argv)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы