【发布时间】:2014-01-24 12:24:31
【问题描述】:
我有以下可执行的 python 脚本:
#!/usr/bin/python
import os
print os.environ
当我以 root 身份从命令行执行它时,我得到以下信息:
{
'LANG': 'en_US.UTF-8',
'TERM': 'xterm-256color',
'SHELL': '/bin/bash',
'LESSCLOSE': '/usr/bin/lesspipe %s %s',
'LANGUAGE': 'en_US:en',
'SHLVL': '1',
'SSH_TTY': '/dev/pts/0',
'OLDPWD': '/var/www/bais-mordechai-laravel',
'COMP_WORDBREAKS': ' \t\n"\'><;|&(:',
'PWD': '/var/www/bais-mordechai-laravel/public',
'LESSOPEN': '| /usr/bin/lesspipe %s',
'SSH_CLIENT': '71.205.188.8 56489 22',
'LOGNAME': 'root',
'USER': 'root',
'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games',
'MAIL': '/var/mail/root',
'LS_COLORS':'...',
'HOME': '/root',
'_': './pythontest',
'SSH_CONNECTION': '...'
}
但是当我从一个 php 脚本(在 nginx 服务器上运行)运行它并回显我得到的结果时:
{
'HOME': '/var/www',
'PWD': '/var/www/bais-mordechai-laravel/public',
'USER': 'www-data'
}
为什么它们不同?具体来说,如何让网络版本包含“PATH”变量?
【问题讨论】:
-
你跑得怎么样了?
-
什么网络服务器和什么机制(wsgi、fcgi)
-
它们是不同的,因为 Web 服务器的工作之一是为其运行的脚本设置环境。您的
PATH可能与其他用户的PATH不同,包括Web 服务器运行脚本的帐户。但是你展示的环境有点稀疏。 CGI 环境会在其中放置更多内容(包括PATH)。也许你所需要的只是确保 PHP 以继承其环境的方式运行脚本,但我不知道,所以我没有回答,对不起。 -
@alKid,这就是我从 php 运行它的方式:
echo shell_exec('./pythontest); -
@Paulo Scardine,我正在使用在 ubuntu 上运行的 nginx。我不确定机制。