Невозможно запустить Python Script из PHP и распечатать вывод в браузер - PullRequest
0 голосов
/ 25 августа 2018

Я видел много других людей, сталкивающихся с подобной проблемой, когда они не могут запускать скрипты Python из PHP. У меня такая же ситуация, но я испробовал все решения, которые рекомендовали люди, но все же не повезло. Я также установил новую систему и сделал свои скрипты максимально простыми. Независимо от того, что я делаю, shell_exec () возвращает NULL.

Так вот, как повторить мою проблему:

  1. Загрузка сервера t2.micro EC2 на Amazon AWS
  2. Настройте его как веб-сервер ( инструкции здесь )
  3. Загрузите файл index.php в / var / www / html со следующим кодом:

<?php 
$command = escapeshellcmd('sudo /usr/bin/python '.__DIR__.'/script.py');
$output = shell_exec($command);
exit(var_dump($output));
  1. Загрузите файл script.py в тот же каталог со следующим кодом:

#!/usr/bin/python

print('Hello!')
  1. Перейдите на общедоступный URL-адрес AWS. Вы получите ответ «NULL»

Поэтому, чтобы попытаться решить эту проблему, я также изменил группу пользователей файла .py на «apache» и запустил команду chmod + x в файле .py. Я подтвердил, что ec2-пользователь И apache входят в группу sudo. Все еще не повезло! Так что я не пробовал? Чего мне не хватает или куда я могу поискать журналы ошибок?

1 Ответ

0 голосов
/ 25 августа 2018

Использование константы файла __FILE__ для определения пути к вашему скрипту Pyhton работает только в том случае, если вы примените к нему функцию dirname - иначе вы получите что-то вроде /var/www/html/script.php/script.py, но на самом деле вы хотите только /var/www/html/script.py.

Есть два простых решения.Используйте dirname или непосредственно __DIR__ константу.

$command = escapeshellcmd('sudo /usr/bin/python ' . __DIR__ . '/script.py');

или

$command = escapeshellcmd('sudo /usr/bin/python ' . dirname(__FILE__) . '/script.py');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...