Я использую EC2 и вошел в систему с ec2-user
. Я использую следующий скрипт для выполнения скрипта Python из Apache. ИТ-служба работает из командной строки, но не из Интернета, и вообще не выводит никаких результатов. Код ниже:
<?php
$command = escapeshellcmd('python3 /home/ec2-user/f1/f2/file.py');
$output = shell_exec($command);
echo $output;
?>
Тот же сценарий отлично работает из командной строки
Предположение №2: на некоторых веб-серверах (я не знаю об услугах Amazon) некоторые функции PHP, такие как shell_exec
, могут быть отключен в php.ini (установка disable_functions
) по соображениям безопасности. Также обращайтесь по адресу: «Необходимо отключить опасные функции PHP»
@feeela disable_functions
вообще не имеет значения. Я также установил полный путь к Python3, но без вывода
Владелец вашего файла Php и пользователь, под которым работает Apache, должны иметь разрешение на запуск скрипта python.
Ssh с сервером и выполните эту команду:
which python3
Он покажет вам путь, поэтому обновите свою команду следующим образом:
path/to/python3 /home/ec2-user/f1/f2/file.py
этот python3 /home/ec2-user/f1/f2/file.py работает нормально, когда вы выполняете его через командную строку "? Какой результат?
да он отлично работает из CLI. это дает желаемый результат. Из Интернета он ничего не выводит.
Предположение №1: Обычно (системный) пользователь, который запускает веб-сервер и, таким образом, выполняет PHP в веб-контексте, отличается от пользователя, которого вы используете при подключении к серверу с использованием SSH. В этом случае
python3
может быть недоступен вPATH
.