Выполнение скрипта Python из функции PHP?

2

Я хочу выполнить скрипт 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?

Теги:

1 ответ

4
Лучший ответ

Ваш веб-сервер не использует ваш домашний каталог, поэтому ~ укажет на неправильное место. Вместо этого укажите полный путь к файлу.

python3 выйдет с 2 когда он не сможет найти файл, вместе с полезным сообщением о stderr. Журналы ошибок веб-сервера подтвердят это, так же как и добавление 2>&1 к вашей команде для захвата stderr как stdout в вашей переменной.

  • 0
    Вот и все! Ха, теперь так очевидно. Код выхода меня немного смутил. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню