2015-08-03 3 views
0

Я пытаюсь запустить питон скрипт из PHP сExec питон из PHP

$res = ''; 
exec('./home/Desktop/Scripts/fetch_matches.py', $res); 

Мой файл питона начинается с #!/usr/bin/python и имеет EXEC права. На данный момент у меня есть только печать, но она не работает (var_dump($res) получает мне пустой массив). Чего не хватает?

Кроме того, если у меня будут разные методы в этом скрипте, как бы я их назвал?

+1

Правильный относительный путь? Вы включили error_reporting? – mario

+0

* Мой файл python начинается с #!/Usr/bin/python и имеет права exec * права exec для ** ??? *** и второй, чтобы проверить, есть ли пользователь/группа php, который может войти в домашний каталог? – donald123

+0

Да, это путь 'pwd' дает мне, и я думаю, что он включен, так как я получил ошибки для других частей программы – Matt

ответ

0

Вам необходимо избавиться от . перед дорогой. Если это обычная система Unix/Linux, /home находится в корне файловой системы. . означает текущий каталог, поэтому, если вы не воссоздали файловую систему /home в каталоге, из которого вы используете программу PHP, путь неверен. Кроме того, если ваше имя пользователя не равно Desktop, вам не хватает директории между /home/ и Desktop/ - это должно быть ваше имя пользователя. Команда pwd никогда не вернет . перед настоящим рабочим каталогом.

Для получения второго вопроса, пожалуйста, обратитесь к документации по адресу calling Python from the command line. Вы можете выполнить произвольный код из командной строки, который может быть чем-то вроде строк

python -c "from fetch_matches import Fetcher; Fetcher()" 
1

Если вы меняете Exec включить /usr/bin/python это должно работать, как ожидалось:

exec('/usr/bin/python ./home/Desktop/Scripts/fetch_matches.py', $res); 

В этих обстоятельствах вы, вероятно, следует использовать абсолютные пути (проверить realpath, а также chdir и любой аргумент спасаясь вам нужно сделать) ,

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