【问题标题】:Apache 2.4 - how to set PATH environment variable on WindowsApache 2.4 - 如何在 Windows 上设置 PATH 环境变量
【发布时间】:2017-03-30 23:22:43
【问题描述】:

如何在 Windows 上更改 Apache 2.4 进程的 PATH 环境变量? 我希望能够使用与应用程序安装程序捆绑在一起的自定义 Python 分发加载 mod_wsgi。现在它只有在单独安装 Python 并且 python dll 已经在 Windows/system32 文件夹中时才会加载。

我不想修改系统 PATH 变量。

根据本文档:

应该允许 SetEnv 在 Apache 2.4 中设置 PATH,但它似乎对我不起作用。 Windows 事件查看器显示“无法将模块/mod_wsgi.so 加载到服务器中:找不到指定的模块”。仅当 Windows/system32 中已存在 python27.dll 时才有效。

【问题讨论】:

  • SetEnv 指令用于为 CGI 脚本设置进程环境变量。在 mod_wsgi 中,该指令将导致在 WSGI environ 字典中设置每个请求变量,并随每个请求传递给 WSGI 应用程序。不对 mod_wsgi 下的 WSGI 应用程序的环境变量做任何处理。
  • @GrahamDumpleton 这是个坏消息,因为我真的不想修改客户端机器上的全局 PATH 变量。您是否知道仅在启动时为 Apache 进程设置此值的任何方法,或者仅为 1 个 Windows 服务设置此值的方法?
  • 尝试使用 Apache 的 LoadFile 指令在启动时通过完整路径强制将 python27.dll 加载到 Apache 中。您可能仍然需要使用WSGIPythonHome 来尝试告诉 mod_wsgi 您的 Python 安装位置。不确定该指令在 Windows 上的效果如何。
  • @GrahamDumpleton 哇,这确实有效。您可以将您的评论更改为答案。

标签: windows apache mod-wsgi


【解决方案1】:

如果 Python DLL 不在 PATH 中且无法添加到那里,则可以添加到 Apache 配置文件中:

LoadFile C:/Python27/libs/python27.lib

这必须在wsgi_moduleLoadModule 行之前。

您可能还需要设置:

WSGIPythonHome C:/Python27

其中参数是 Python 安装的 sys.prefix 的值。

如果从 mod_wsgi 中初始化 Python 时找不到 Python 安装的位置,则需要后者。

【讨论】:

  • 我可以确认这适用于 Apache 2.2 并且完全忽略驻留在 Windows/system32 文件夹中并且可以正常加载的任何其他 python27.dll。 “LoadFile”也应该得到 dll 文件的路径而不是 lib。
  • @grahamdumpleton 我正在php中执行python脚本,但是如果import pandas, numpy, ...不是import sys,则无法正常运行脚本,我应该在httpd.conf中添加类似的东西吗?谢谢!
猜你喜欢
  • 2015-01-11
  • 2016-07-28
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2011-02-14
  • 2014-02-01
  • 1970-01-01
相关资源
最近更新 更多