如何在Python中包含PHP脚本?

时间:2009-06-29 20:44:02

标签: php python scripting integration execution

我有一个PHP脚本(news-generator.php),当我包含它时,抓取一堆新闻并打印它们。现在,我正在使用Python作为我的网站(CGI)。当我使用PHP时,我在“新闻”页面上使用了类似的内容:

<?php
print("<h1>News and Updates</h1>");
include("news-generator.php");
print("</body>");
?>

(为简单起见,我减少了这个例子。)

有没有办法让Python执行脚本(news-generator.php)并返回可以跨平台工作的输出?这样,我可以这样做:

page_html = "<h1>News and Updates</h1>"
news_script_output = php("news-generator.php") //should return a string
print page_html + news_script_output

5 个答案:

答案 0 :(得分:10)

import subprocess

def php(script_path):
    p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
    result = p.communicate()[0]
    return result

# YOUR CODE BELOW:
page_html = "<h1>News and Updates</h1>"
news_script_output = php("news-generator.php") 
print page_html + news_script_output

答案 1 :(得分:7)

PHP是一个程序。您可以使用subprocess运行任何程序。

困难的部分是模拟PHP期望的整个CGI环境。

答案 2 :(得分:1)

可能不是主题,但如果你想以一种可以访问vars的方式来执行此操作,例如由php脚本创建的(例如,新闻项目数组),那么你最好的做法就是执行php脚本,但是从php返回json编码的项目数组作为字符串,然后json在python端解码它们,并在那里进行html生成和迭代。

答案 3 :(得分:0)

我认为最好的答案是让apache分别渲染两个页面,然后使用javascript将该页面加载到div中。你有ajax负载的轻微减速但你不必担心它。

有一个开源小部件的东西,将在1页中运行多种语言,但我不记得它的名称。

答案 4 :(得分:0)

您可以使用urllib从服务器(localhost)获取页面,并在适合php的环境中执行它。不漂亮,但它会起作用。如果你做了很多,可能会导致性能问题。