我有以下可执行的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'变量?
答案 0 :(得分:3)
对于apache,请参阅mod_setenv。
此模块允许控制各种Apache HTTP Server模块使用的内部环境变量。这些变量也作为本机系统环境变量提供给CGI脚本,并可在SSI页面中使用。环境变量可以从调用httpd进程的shell传递。或者,可以在配置过程中设置或取消设置环境变量。
如果您使用的是Apache的FCGId,请参阅FcgidInitialEnv。
使用FcgidInitialEnv定义要传递给FastCGI应用程序的环境变量。该指令可以多次使用。
此设置将应用于为此服务器或虚拟主机生成的所有应用程序。使用FcgidCmdOptions将此设置应用于单个应用程序。
对于Nginx CGI,请参阅env设置。
默认情况下,nginx会删除从其父进程继承的所有环境变量,但TZ变量除外。该指令允许保留一些继承的变量,更改它们的值或创建新的环境变量。
如果您使用的是NgxWSGIModule,请参阅wsgi_var设置。
指令分配变量,该变量将被添加到 环境字典传递给WSGI应用程序。 可以使用字符串,nginx变量及其 组合作为价值观。未设置的指令继承自 外层。
如果您在(gunicorn | tornado | twisted | etc)+ supervisord下运行您的应用程序,请参阅environment指令。
KEY =“val”形式的键/值对列表,KEY2 =“val2”将放置在supervisord进程的环境中(因此在其所有子进程环境中)。此选项可以包含值%(此处)s,它会扩展到找到supervisord配置文件的目录。应引用包含非字母数字字符的值(例如KEY =“val:123”,KEY2 =“val,456”)。否则,引用值是可选的,但建议使用。请注意,子进程将继承用于启动supervisord的shell的环境变量,除了在此处和程序的环境选项中重写的那些变量。
如果您正在使用其他内容,请与我们联系。
您始终可以使用os.environ注入环境变量 - 在(c | fc | ws)gi.py脚本的开头执行此操作。 Se也sys.path:
sys.path.append('/usr/local/django')