在 Apache 服务器下调用的 Python 应用程序与从命令行运行的应用程序不同

在 Apache 服务器下调用的 Python 应用程序与从命令行运行的应用程序不同

因此,我在 RHEL6 上的 Apache 下运行 dokuwiki,并开发一个在 php 脚本中调用 proc_open 的插件。我的问题是,我试图调用一个已在本地为 apache 安装的应用程序(在 下~/.local/bin),但从 php 调用的程序是不同的。这样理解可能更好:

当我以用户身份登录时apache

$ sudo su - user

然后我检查我的应用程序版本:

$ /var/www/.local/bin/rst2html.py --version

我得到:

rst2html.py (Docutils 0.12 [release], Python 2.6.6, on linux2)

然而,当我相同的调用我在 apache 下运行的 php 应用程序(使用 proc_open),我得到:

rst2html.py (Docutils 0.6 [release], Python 2.6.6, on linux2)

这是全局安装的版本,也就是说,所有用户都可以使用。

那么是什么导致了这种差异,我是否需要在环境中进行某些设置?

注意:python 应用程序是使用pip

答案1

听起来,您不是通过 Web 运行它,而是从命令行运行它 - 在这种情况下,脚本将以运行它的用户身份运行(事实上,这里甚至不涉及 apache) - 因此如果您在运行它时是 root 身份,它将以 root 身份运行。

如果您想以 apache 身份运行脚本,请尝试类似 sudo -u apache "/path/to/script" 的操作

相关内容