web-dev-qa-db-ja.com

Pythonでphpコードを実行

何らかの理由で、PHPスクリプトを実行してPythonから画像を取得する必要があります。 phpスクリプトは非常に大きく、私のものではないため、使用する適切なアルゴリズムを見つけてPythonに変換するのに数日かかります。

Pythonで画像を返すパラメーターがほとんどないphpスクリプトを実行する方法があるのではないかと思います。

27
jiahao

サンプルコード:

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

Pythonからphp実行可能ファイルを実行するだけです。

編集: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
13
Sjoerd

php.py を使用できます。これにより、この例のようにpythonでphpコードを実行できます( here から取得):

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

PHPスクリプトの周りにラッパーを作成します。

  • ものを実行します(私がよく理解していれば、それはイメージ作成です)、
  • 次に、(301 Moved Permanently)を結果イメージにリダイレクトします。
  • (また、イメージはいつかパージされる必要があります)。

だから、これを参照することができますservice(PHPスクリプト)どこからでも、簡単なHTTPリクエストで、ブラウザでテストし、from Python prgを使用します。通常の方法で画像をダウンロードするだけです。

また、このようなスタンドアロンのサブシステムを使用している場合、別の言語/技術でそれを実装することを気にしないでください。それにはいくつかの利点があります。そのサービスを別のホストにインストールできます。

推奨読書: Service-Oriented Architecture ウィキペディアで。

3
ern0

コマンドラインからローカルでPHPスクリプトを実行できる場合、 subprocess.check_output() により、PHP戻り値をキャプチャします。

PHPソケット経由でアクセスしている場合は、 rllib.urlopen() または rllib.urlretrieve() を使用してプルダウンできますリソース。

3