PHP Exec Python не работает - PullRequest
       48

PHP Exec Python не работает

3 голосов
/ 27 февраля 2011

эй, yall. Я использую Python на веб-сервере от Dreamhost. Я использую их установку python и использую модуль lastfm, который можно найти здесь: http://code.google.com/p/python-lastfm/

чтобы правильно импортировать, я делаю это

import sys
sys.path.append("/home/myusername/build/Python-2.5/Lib/site-packages/")
import lastfm

, поскольку там установлен модуль lastfm.

Когда я использую putty для ssh на своем сервере, я могу просто запустить python test.py, и он отлично работает. Но когда я запускаю его из сценария php с

exec("python test.py");

предположительно не работает и скрипт не запускается. он отлично работает, когда я

import lastfm

а потом есть другие вещи, но когда я на самом деле пытаюсь сделать что-то с модулем, как:

import lastfm
api=lastfm.Api(api_key)

он не запускается. еще раз я могу запустить скрипт, используя ту же установку Python в оболочке, и он работает нормально. Так что должно произойти что-то не так, когда я запускаю его из сценария php. Я подумал, что это будет работать точно такой же питон и все. Я проверил другие сообщения, и они говорят, что это может быть что-то с правами доступа к файлам, но я поставил каждый файл на 777, и он все еще не работает. ИДК, в чем проблема может быть. заранее всем спасибо.

Ответы [ 4 ]

1 голос
/ 27 февраля 2011

Какую бы ошибку ни вызывал питон, он попадет в stderr ребенка.Попробуйте либо сказать php читать из stderr, либо (в python) сделать это:

import sys
sys.stderr = sys.stdout
1 голос
/ 27 февраля 2011

Попробуйте использовать полный путь к исполняемому файлу Python. Например:

exec ("/ usr / bin / python test.py")

Вы можете найти полный путь из командной строки, используя команду which:

$ какой питон / USR / бен / питон

0 голосов
/ 30 июня 2017

Для пользователей Windows - Благодаря Karlisup мой PHP-файл смог прочитать Python. Я использую BITNAMI WAMP в EC2 Amazon, мой файл python (leadatos.py) и файл php находятся в папке htdocs.

Мой звонок был

<?php
  passthru('C:\\Python27\\python.exe leadatos.py');
 ?>

Последняя строка моего файла Python была print "message".

Надеюсь, это слова!

0 голосов
/ 31 октября 2011

Для пользователей Windows:

$output = null;
exec('C:\\Python27\\python.exe C:\\sud.py', $output);
echo var_export($output, TRUE);

Код, который я искал целый день ^^Вот почему - надеюсь, это кому-нибудь поможет.

...