繁体   English   中英

从Web服务器执行时,为什么Python环境变量不同?

[英]Why are Python environment variables different when executed from a web server?

我有以下可执行的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'变量?

对于apache,请参阅mod_setenv

此模块允许控制各种Apache HTTP Server模块使用的内部环境变量。 这些变量也作为本机系统环境变量提供给CGI脚本,并可在SSI页面中使用。 环境变量可以从调用httpd进程的shell传递。 或者,可以在配置过程中设置或取消设置环境变量。

如果您使用的是Apache的FCGId,请参阅FcgidInitialEnv

使用FcgidInitialEnv定义要传递给FastCGI应用程序的环境变量。 该指令可以多次使用。

此设置将应用于为此服务器或虚拟主机生成的所有应用程序。 使用FcgidCmdOptions将此设置应用于单个应用程序。

对于Nginx CGI,请参阅env设置。

默认情况下,nginx会删除从其父进程继承的所有环境变量,但TZ变量除外。 该指令允许保留一些继承的变量,更改其值或创建新的环境变量。

如果您使用的是NgxWSGIModule,请参阅wsgi_var设置。

Directive指定变量,该变量将添加到传递给WSGI应用程序的环境字典中。 可以使用字符串,nginx变量及其组合作为值。 未设置的指令是从外层继承的。

如果您在(gunicorn | tornado | twisted | etc)+ supervisord下运行您的应用程序,请参阅环境指令。

KEY =“val”形式的键/值对列表,KEY2 =“val2”将放置在supervisord进程的环境中(因此在其所有子进程环境中)。 此选项可以包含值%(此处)s,它会扩展到找到supervisord配置文件的目录。 应引用包含非字母数字字符的值(例如KEY =“val:123”,KEY2 =“val,456”)。 否则,引用值是可选的,但建议使用。 请注意,子进程将继承用于启动supervisord的shell的环境变量,除了在此处和程序的环境选项中重写的那些变量。

如果您正在使用其他东西,请告诉我。

您始终可以使用os.environ注入环境变量 - 在(c | fc | ws)gi.py脚本的开头执行此操作。 也是sys.path

sys.path.append('/usr/local/django')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM