我有以下可執行python腳本:從Web服務器執行時,爲什麼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'
}
它們爲什麼不同?具體來說,我怎樣才能讓Web版本包含'PATH'變量?
你是如何運行和呼應它? – aIKid
什麼web服務器和什麼機制(wsgi,fcgi) –
他們是不同的,因爲Web服務器的工作之一是爲其運行的腳本設置環境。您的PATH可能與其他用戶的PATH不同,包括Web服務器運行腳本的帳戶。但是你展示的環境是稀疏的。一個CGI環境會把更多的東西放在那裏(包括'PATH')。也許你所需要的只是確保PHP以一種繼承它的環境的方式運行腳本,但我不知道我的回答,對不起。 –