【问题标题】:Php exec python script 'weakness'/downsidePhp exec python脚本'弱点'/缺点
【发布时间】:2013-12-26 09:26:40
【问题描述】:

用php执行python脚本有哪些不好的地方?

还有,和通过cgi方法执行python有什么区别

我从Running python script from php 发现了一个有趣的方法,我认为使用它会很棒

exec("python ../cgi-bin/form.py");

和密切相关的方法。

请正确解释并告诉我在使用此方法时需要注意什么。

【问题讨论】:

  • “弱点”是依赖exec()。至少,并非所有主机都允许这样做
  • 愿意通过回答问题来解释吗?
  • 等等——你的意思是你想创建一个“代理”层,从而将请求从 PHP 传递给 python?
  • 任何人,请回答。
  • @AlmaDo 不,只是执行。请查看新编辑

标签: php python cgi


【解决方案1】:

你的问题很常见——一般来说不是执行python脚本——而是执行一些external命令。为此,您需要满足一些条件:

  • 通常,PHP 由 Web 服务器运行。所以要执行一些脚本,web-server 必须能够做到这一点。这意味着 - OS 用户,从其启动 web 服务器,必须有足够的权限来执行外部命令
  • 在许多情况下,外部执行功能,如exec()system() 被视为不安全 - 因此在常见情况下被禁用(我说的是托管)。因此,依赖这些功能将使您的应用程序的技术要求更加严格 - 您将无法使用此类托管。

除上述之外,PHP 脚本将“挂起”,直到完整数据从 exec() 传递回脚本。这意味着执行速度慢和可预测的响应时间低。而且,更多的是,在 Win 系统中执行外部脚本 is included 到总脚本执行时间(不像在 *nix 系统中) - 因此,如果您的外部脚本太长而无法响应,您可能有很好的机会捕获时间限制错误.

如果您想与将 python 脚本作为 CGI 启动进行一些“比较” - 那么您应该选择 CGI。至少因为它旨在服务于这个目的。使用 CGI 启动 python 脚本肯定会在速度方面获胜 - 因为启动 PHP 脚本不会产生任何开销(例如,如果您只想使用 python,则可以禁用 PHP 支持)。通常情况下的权限级别不会成为问题,因为在结束时,可执行文件将从 Web 服务器用户启动,因此,它们在两种情况下都是相同的。而且,正如我上面提到的,通过 CGI 启动不会将您绑定到 PHP 的时间限制 - 您不会关心 PHP 中发生的事情。

所以主要的想法是 - 是的,这是一种启动方式。但是不 - 如果您可以通过 CGI 启动本地执行此操作,那么您不应该这样做。

【讨论】:

  • 是服务器端脚本还是别的什么?
  • PHP 在服务器上执行。那你什么意思?
  • 你能告诉我使用cgi执行vs php吗?
  • 如果你需要从 PHP 脚本启动一些东西(这是严格的要求)——那么exec()-like 函数是你的选择。在这种情况下,我不明白您在“CGI”下的意思。没有区别,因为它将是 Web 服务器启动可执行文件(因此,权限级别在常见情况下是相同的)
  • 您的答案中没有将它与 cgi 进行比较。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 2012-03-29
  • 1970-01-01
  • 2013-03-13
  • 2014-04-08
  • 2011-03-23
相关资源
最近更新 更多