У меня серьезная проблема, и я не могу найти решение. В настоящее время у меня есть скрипт PHP, который принимает веб-крючок (HTTP POST) в качестве триггера. Исходя из переменных, содержащихся в POST, предполагается, что exec («скрипт python») будет возвращать некоторые переменные. Он работает нормально, когда я запускаю его из командной строки, он работает нормально, но когда я пытаюсь запустить скрипт из любого типа HTTP-запроса, функция exec () не запускается. Вот часть кода, на которую влияют:
$command = shell_exec('python C:\\xampp\\cgi-bin\\SECpull.py');
$company_dump = print_r($command, TRUE);
$fp = fopen('retvals.txt', 'w');
fwrite($fp, $company_dump);
fclose($fp);
Если невозможно иметь функцию exec () в скрипте PHP, которая запускается HTTP POST, то как мне поступить?
проблема
Как Робби Аверилл Как уже упоминалось, скорее всего, у вас есть проблема с разрешениями, и вы можете исправить ее, добавив дополнительные разрешения пользователю, который используется для запуска веб-сервера. Тем не менее, я думаю, что это не хороший стиль, чтобы смешивать PHP с питон, и если вы не можете переписать SECpull.py
в PHP, тогда лучше все делай в питон.
Я предлагаю вам использовать колба для этого.
Образец
# server.py
from flask import Flask
app = Flask(__name__)
# Setup custom route here
@app.route("/")
def index():
# Add SECpull.py logic here.
return "Welcome To Python Server!"
if __name__ == "__main__":
app.run()
Настроить
$ pip install Flask
$ python server.py
* Running on http://localhost:5000/
Других решений пока нет …