在Python中执行PHP代码

时间:2012-01-24 09:12:56

标签: php python

出于某种原因,我必须运行一个PHP脚本来从Python获取图像。因为php脚本非常大并且不是我的,所以我需要花费几天时间找出所使用的算法并将其转换为python。

我很想知道是否有任何方法可以在python中运行带有少量参数的PHP脚本,这些参数会返回一个图像。

5 个答案:

答案 0 :(得分:38)

示例代码:

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

答案 1 :(得分:13)

您只需从Python执行php可执行文件即可。

使用subprocess.run编辑:Python 3.5及更高版本的示例:

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

答案 2 :(得分:6)

您可以使用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)

答案 3 :(得分:3)

围绕PHP脚本创建一个包装器,其中包含:

  • 执行这些东西(如果我理解的话,这是一个图像创建),
  • 然后重定向( 301永久移动)到结果图像,
  • (另外,图像应该在某天清除。)

所以你可以通过一个简单的HTTP请求来引用这个服务(PHP脚本),从任何地方,你可以用浏览器测试它,使用Python prg,你需要只需下载图像通常的方式。

另外,如果你有一个这样独立的子系统,不要用不同的语言/技术来实现它。它有几个优点,例如您可以在其他主机上安装该服务。

推荐阅读:维基百科上的Service-Oriented Architecture

答案 4 :(得分:3)

如果您可以从命令行本地运行PHP脚本,subprocess.check_output()将允许您使用PHP并捕获返回值。

如果您通过套接字访问PHP,则可以使用urllib.urlopen()urllib.urlretrieve()来下载资源。