【问题标题】:How do I include a PHP script in Python?如何在 Python 中包含 PHP 脚本?
【发布时间】:2010-11-06 19:43:51
【问题描述】:

我有一个 PHP 脚本 (news-generator.php),当我包含它时,它会抓取一堆新闻并打印出来。现在,我正在为我的网站 (CGI) 使用 Python。当我使用 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

【问题讨论】:

  • “为了简单起见,我简化了示例。” ——你还会为了什么简化它? ;)
  • @musicfreak:傻笑?效率?美女?
  • 我曾与“简化示例”的人一起工作,以掩盖他们的无能。我希望这里不是这样。

标签: php python scripting integration execution


【解决方案1】:
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

【讨论】:

  • 唯一的问题是,正如 S.Lott 提到的,模拟 PHP 想要的 CGI 环境。
【解决方案2】:

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

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

【讨论】:

  • 好点。我想这取决于你运行的是哪种 PHP。
  • PHP-CLI 是否需要这种类型的环境?
  • PHP CGI 需要很多环境。 CLI 似乎需要更少的环境设置。这是最终的文档。 php.net/manual/en/features.commandline.php.
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    有一个开源小部件可以在一页中运行多种语言,但我不记得它叫什么了。

    【讨论】:

      【解决方案5】:

      您可以使用 urllib 从服务器 (localhost) 获取页面并在正确的 php 环境中执行它。不漂亮,但它会工作。如果你经常这样做,可能会导致性能问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-06
        • 1970-01-01
        • 1970-01-01
        • 2018-02-24
        • 2016-06-24
        • 1970-01-01
        相关资源
        最近更新 更多