Я хочу выполнить скрипт python, test.py
, из php-функции.
#!/usr/bin/env python
import random
def test() :
print("test success")
if __name__ == '__main__':
test()
Я могу успешно выполнить его с помощью командной строки php:
php -r '$message = exec("python3 ~/../scripts/test.py"); print_r($message);'
Я добавил следующее к моему php-коду:
$message = exec("python3 ~/../scripts/test.py", $output, $return_val);
Когда я его выполняю, ничего не выводится (ошибок в devtools нет). Когда я печатаю переменные, $output
и $message
пусты, а $return_val
равно 2 (неправильное использование встроенных оболочек в соответствии с документацией Bash).
Я знаю, что exec()
разрешен после добавления следующего в ту же функцию:
if (exec('echo TEST') == 'TEST')
{
echo 'exec works!';
}
Что может вызвать эту ошибку? Как я могу выполнить скрипт python с php?
Ваш веб-сервер не использует ваш домашний каталог, поэтому ~
укажет на неправильное место. Вместо этого укажите полный путь к файлу.
python3
выйдет с 2
когда он не сможет найти файл, вместе с полезным сообщением о stderr. Журналы ошибок веб-сервера подтвердят это, так же как и добавление 2>&1
к вашей команде для захвата stderr как stdout в вашей переменной.