Подтвердить что ты не робот

Выполнить php-код в Python

По какой-то причине я должен запустить php script, чтобы получить изображение с Python. Поскольку PHP скрипт очень большой, и он не мой, мне потребуется несколько дней, чтобы узнать правильный алгоритм и перевести его в python.

Мне интересно, есть ли способ запустить php script, с несколькими параметрами, которые возвращают изображение, в python.

4b9b3361

Ответ 1

Пример кода:

import subprocess

# if the script don't need output.
subprocess.call("php /path/to/your/script.php")

# if you want output
proc = subprocess.Popen("php /path/to/your/script.php", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()

Ответ 2

Вы можете просто выполнить исполняемый файл php из Python.

Изменить: пример для Python 3.5 и выше с помощью subprocess.run:

import subprocess

result = subprocess.run(
    ['php', 'image.php'],    # program and arguments
    stdout=subprocess.PIPE,  # capture stdout
    check=True               # raise exception if program fails
)
print(result.stdout)         # result.stdout contains a byte-string

Ответ 3

Вы можете использовать php.py. Это позволит вам выполнить php-код в python, как в этом примере (взято из здесь):

php = PHP("require '../code/private/common.php';")
code = """for ($i = 1; $i <= 10; $i++) { echo "$i\n"; }"""
print php.get_raw(code)

Ответ 4

Сделайте обертку вокруг PHP script, который:

  • выполняет материал (если я хорошо понимаю, это создание образа),
  • затем перенаправляет (301 перемещается навсегда) на результат,
  • (также изображение должно быть очищено однажды).

Таким образом, вы можете обратиться к этой службе (PHP script) с помощью простого HTTP-запроса, откуда угодно, вы можете протестировать его в браузере, использовать с Python prg, вам нужно просто загрузить изображение обычным способом.

Кроме того, если у вас есть такая автономная подсистема, не чувствуйте себя плохо, чтобы реализовать ее с помощью другого языка/техники. Он имеет несколько преимуществ, например. вы можете установить эту службу на другой хост.

Рекомендуемое чтение: сервис-ориентированная архитектура в Википедии.

Ответ 5

Если вы можете запустить PHP script локально из командной строки, subprocess.check_output() позволит вам PHP и будет захватить возвращаемое значение.

Если вы используете PHP через сокет, вы можете использовать urllib.urlopen() или urllib.urlretrieve(), чтобы вытащить ресурс.