Выполнение php кода в Python

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

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

5 ответов


пример кода:

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()

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

Edit: пример для 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

вы можете использовать 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)

сделайте обертку вокруг скрипта PHP, который:

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

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

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

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


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

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