簡體   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