【问题标题】:Python open() function not working when script executed by shell_exec() in PHP当 PHP 中的 shell_exec() 执行脚本时,Python open() 函数不起作用
【发布时间】:2017-11-23 21:44:34
【问题描述】:

我的 Python 脚本中有一个 open() 命令,它在我的 Apache 服务器中以 w 模式打开文件 data.json。该脚本又由 PHP 使用 shell_exec 命令运行。当脚本单独运行时,Python 代码可以工作。 然而, PHP 运行时它不起作用。有谁知道为什么会这样,还是需要更多信息?提前感谢您的帮助!

【问题讨论】:

  • 请注意,我目前不在工作站,因此如果需要,我无法提供 ant sn-ps 代码。
  • 我假设你有某种 Linux 发行版在你的 Pi 上运行。您的 Python 文件是否包含 shebang 行 (stackoverflow.com/questions/2429511/…)?我认为这是我前段时间遇到的一个问题,当时 Python 文件无法在某种 Linux 服务器上从 PHP 运行。
  • 感谢您的建议...正如我之前所说,我目前不在我的工作站,所以我无法尝试。问题是,PHP 可以很好地运行它直到我开始使用 open() 函数。 - 是的,我正在运行 Rasbian,不,我没有那行代码,所以这可能是问题所在。谢谢!
  • 听起来像是一个特权问题,虽然我没有足够的经验从 php 调用 Python 来知道这是否可能是一个问题。
  • 我已经 chmod 777 * 一切......所以我认为这应该不是问题。好吧,除非 data.json 还没有被读/写。等我回家看看。

标签: php python json apache file-io


【解决方案1】:

你使用的是相对路径还是绝对路径?

尝试使用绝对路径并检查您的工作目录。 我认为您不是在您认为的目录中启动 python 脚本。 :)

【讨论】:

  • 我使用的是相对路径(只是“data.json”而不是“path/to/data.json”)。附言我喜欢你的用户名。 ;)
【解决方案2】:

感谢 user2693053 解决了这个问题:

听起来像是特权问题,虽然我没有足够的经验 从 php 调用 Python 以了解这是否是一个问题 在这里。

是的,这是一个特权问题!我通过在/var/www/html 目录中执行sudo chmod 777 * 命令解决了这个问题。

【讨论】:

  • 如果您创建一个拥有文件的新用户组,这会更加安全。在这个组中,是您运行脚本的用户,以及 httpd 用户。 777的权利真的很不安全。
  • 很抱歉没有尽快回复,因为我在其他帖子上投了几次反对票,所以我被禁止提问,所以我没有在 Stack Overflow 上这么多……抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 2014-11-25
  • 2015-11-28
  • 1970-01-01
相关资源
最近更新 更多