因此,我在 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" 的操作