Php: невозможно выполнить сценарий командной строки из интернета

Я использую EC2 и вошел в систему с ec2-user. Я использую следующий скрипт для выполнения скрипта Python из Apache. ИТ-служба работает из командной строки, но не из Интернета, и вообще не выводит никаких результатов. Код ниже:

<?php

$command = escapeshellcmd('python3 /home/ec2-user/f1/f2/file.py');
$output = shell_exec($command);
echo $output;

?>

Тот же сценарий отлично работает из командной строки

Предположение №1: Обычно (системный) пользователь, который запускает веб-сервер и, таким образом, выполняет PHP в веб-контексте, отличается от пользователя, которого вы используете при подключении к серверу с использованием SSH. В этом случае python3 может быть недоступен в PATH.

feeela 11.04.2018 12:58

Предположение №2: на некоторых веб-серверах (я не знаю об услугах Amazon) некоторые функции PHP, такие как shell_exec, могут быть отключен в php.ini (установка disable_functions) по соображениям безопасности. Также обращайтесь по адресу: «Необходимо отключить опасные функции PHP»

feeela 11.04.2018 13:00

@feeela disable_functions вообще не имеет значения. Я также установил полный путь к Python3, но без вывода

Volatil3 11.04.2018 13:04

Владелец вашего файла Php и пользователь, под которым работает Apache, должны иметь разрешение на запуск скрипта python.

Nadir Latif 12.04.2018 09:39
0
4
148
1

Ответы 1

Ssh с сервером и выполните эту команду:

which python3

Он покажет вам путь, поэтому обновите свою команду следующим образом:

path/to/python3 /home/ec2-user/f1/f2/file.py

этот python3 /home/ec2-user/f1/f2/file.py работает нормально, когда вы выполняете его через командную строку "? Какой результат?

Danyal Sandeelo 11.04.2018 13:17

да он отлично работает из CLI. это дает желаемый результат. Из Интернета он ничего не выводит.

Volatil3 11.04.2018 13:33

Другие вопросы по теме