Рейтинг:1

Невозможно запустить скрипт Python из PHP

флаг br

Этот конкретный вопрос задавался так много раз с отличными предложениями, но внезапный отказ от Аскеров на самом деле не помогает, поскольку они никогда не удосужились вернуться, чтобы рассказать, что сработало (при условии, что в конечном итоге это сработало)

Я пытаюсь запустить скрипт Python из PHP, но не смог. Среда: PHP 7.3, Python 3.8, CentOS 7, Apache 2.4, Bluehost VPS.

  • Пробовал оба исполнитель и shell_exec

  • апачектл -S показывает, что сервер apache работает как никто: никто

  • Добавлен никто в sudoer с помощью никто ВСЕ=(ВСЕ) NOPASSWD: /etc/bin/python3

  • Добавлены разрешения Execute для скрипта Python и изменен владелец никому (так же, как apache) ls -l тестирование.py дает -rwxr-xr-x 1 никто никто

  • Сценарий Python сам по себе отлично работает из оболочки.

Вот мой код:

<?php
error_reporting(E_ALL);
$command = 'python3 /home/uploads/testing.py';
$command = escapeshellcmd($command);
$shelloutput = exec($command,$output, $ret_code);
echo "<h1>";
echo $shelloutput;
echo $output;
echo $ret_code;
echo "</h1>";
?>

Скрипт на питоне:

#!/usr/bin/env python3
импорт системы
распечатать("Привет")
системный выход (8)

Когда я запускаю файл PHP из браузера, я абсолютно ничего не получаю. Я был бы признателен за любую помощь в решении этой проблемы.

флаг in
Ваш код работает для меня. Проверьте настройки httpd. при необходимости увеличьте детализацию журнала.
флаг in
Вам не нужна конфигурация sudo; вам не нужно устанавливать исполняемый файл .py, поскольку вы предоставляете его в качестве параметра бинарному файлу python3; python3 может выполняться каждым пользователем.
флаг cn
`/etc/bin/python3`? вы уверены в этом имени файла?
Rocky avatar
флаг br
@DanilaVershinin Хороший улов. `whereis python3' дает 'python3: /usr/bin/python3` Все еще не работает
Rocky avatar
флаг br
@GeraldSchneider Спасибо за редактирование вопроса, теперь выглядит идеально. Что я должен смотреть в конфигурационном файле apache, чтобы запустить python из оболочки? Я проверил файл apache error_log, там ничего нет. Как увеличить детализацию журнала? Я думал, что у меня уже есть макс.
Rocky avatar
флаг br
@GeraldSchneider Проблема, похоже, не устранена, но по-другому. PHP может запускать сценарии с моего сервера, за исключением каталога, в котором работает сайт Wordpress. Я искал везде, чтобы увидеть, что может переопределить директивы php.ini по умолчанию, но не смог. Любые идеи?
Рейтинг:0
флаг br

Обнаружено, что проблема была с файлом php.ini, удален отключить_функции="" директива и скрипт Python работали. Как упомянул Джеральд в комментариях, мне не нужно было ничего добавлять к sudoers файла или изменить права доступа к файлу/пользователей, отличные от стандартных атрибут разрешения (или 0755)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.