You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

环境变量在Django内置服务器生效但Apache服务器不生效如何解决?

问题原因
  • Apache服务的运行账号默认是本地系统账号,和你登录Windows用的用户账号权限隔离,你在用户/系统环境变量里配置的参数,默认不会被Apache服务读取。
  • 如果你用mod_wsgi部署Django,mod_wsgi不会自动将Apache拿到的环境变量同步到Python的os.environ字典中,需要手动配置传递。
解决方案

方案1:直接在Apache配置中定义环境变量

打开Apache的httpd.conf配置文件,或者你的站点对应的虚拟主机配置文件,添加SetEnv指令定义你需要的环境变量:

SetEnv SMTP_PASSWORD 你的SMTP密码

修改完成后,还需要修改Django项目根目录下的wsgi.py文件,手动将Apache传递的环境变量写入os.environ:

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名称.settings')
application = get_wsgi_application()

# 新增环境变量传递逻辑
def wrap_application(environ, start_response):
    # 列表中添加所有你需要读取的环境变量键名
    for env_key in ["SMTP_PASSWORD"]:
        if env_key in environ:
            os.environ[env_key] = environ[env_key]
    return application(environ, start_response)

application = wrap_application

保存所有修改后重启Apache服务即可生效。

方案2:修改Apache服务的运行账号

如果你不想修改Apache配置,也可以直接让Apache用你登录系统的账号运行:

  1. 按下Win+R输入services.msc打开服务管理器
  2. 找到Apache对应的服务项,右键选择「属性」
  3. 切换到「登录」选项卡,选择「此账户」,填写你当前登录Windows的账号和密码
  4. 保存设置后重启Apache服务,就可以读取到该账号下配置的环境变量了。

内容的提问来源于stack exchange,提问作者user3288051

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:00:01