【发布时间】:2017-03-30 23:22:43
【问题描述】:
如何在 Windows 上更改 Apache 2.4 进程的 PATH 环境变量? 我希望能够使用与应用程序安装程序捆绑在一起的自定义 Python 分发加载 mod_wsgi。现在它只有在单独安装 Python 并且 python dll 已经在 Windows/system32 文件夹中时才会加载。
我不想修改系统 PATH 变量。
根据本文档:
- http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv
- http://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv
- https://bz.apache.org/bugzilla/show_bug.cgi?id=43906
应该允许 SetEnv 在 Apache 2.4 中设置 PATH,但它似乎对我不起作用。 Windows 事件查看器显示“无法将模块/mod_wsgi.so 加载到服务器中:找不到指定的模块”。仅当 Windows/system32 中已存在 python27.dll 时才有效。
【问题讨论】:
-
SetEnv指令用于为 CGI 脚本设置进程环境变量。在 mod_wsgi 中,该指令将导致在 WSGIenviron字典中设置每个请求变量,并随每个请求传递给 WSGI 应用程序。不对 mod_wsgi 下的 WSGI 应用程序的环境变量做任何处理。 -
@GrahamDumpleton 这是个坏消息,因为我真的不想修改客户端机器上的全局 PATH 变量。您是否知道仅在启动时为 Apache 进程设置此值的任何方法,或者仅为 1 个 Windows 服务设置此值的方法?
-
尝试使用 Apache 的
LoadFile指令在启动时通过完整路径强制将python27.dll加载到 Apache 中。您可能仍然需要使用WSGIPythonHome来尝试告诉 mod_wsgi 您的 Python 安装位置。不确定该指令在 Windows 上的效果如何。 -
@GrahamDumpleton 哇,这确实有效。您可以将您的评论更改为答案。