环境变量

目录

背景

许多环境变量可用于控制MapServer的行为或指定某些资源的位置。

小技巧

就GDAL而言,有关GDAL可能使用的变量的详细列表(以帮助控制MapServer中的数据访问),请参阅 GDAL wiki 。主GDAL站点也有一个 list

所有可能的MapServer环境变量列表

CURL_CA_BUNDLE

5.4.1 新版功能.

用于指定在WMS/WFS客户端层中使用HTTPS连接时Curl要使用的证书颁发机构(CA)捆绑文件的位置。默认情况下,CURL与其自己的CA包捆绑在一起,因此不需要此变量,除非您有一个特殊的安装:

export CURL_CA_BUNDLE=/path/to/ca-bundle.crt
MS_DEBUGLEVEL

5.0 新版功能.

默认设置 DEBUG 级别值可以使用 MS_DEBUGLEVEL 环境变量与 MS_ERRORFILE 变量。

设置后,在映射文件解析器加载所有映射和层对象时,该值将用作它们的默认调试级别值。此选项还为位于map或Layer对象的上下文之外的任何msDebug()调用设置调试级别,例如,对于与加载map之前的初始化相关的调试语句。如果一个 DEBUG 值也是在某些地图或层对象的映射文件中指定的,则本地值(在映射文件中)优先于环境变量的值。

例如,当通过在映射加载之前启用计时/调试输出来调优应用程序时,该选项非常有用,以捕获完整的进程初始化和映射加载时间。

MS_ENCRYPTION_KEY

4.10 新版功能.

参见

msencrypt

MS_ERRORFILE

这个 MS_ERRORFILE 环境变量指定日志记录/调试输出的位置,可能的值可以是磁盘上的文件路径,也可以是以下特殊值之一:

  • “stderr”将输出发送到标准错误。在apache stderr下是apache error_log文件。在IIS中,stderr被设置为stdout,因此不鼓励使用它。对于IIS,建议改为直接输出到磁盘上的文件。

  • “stdout”将输出发送到标准输出,并与MapServer的其余输出相结合。

  • “windowsdebug”将输出发送到Windows OutputDebugStringAPI,允许使用像Sysinterals调试视图这样的外部程序来显示调试输出。

可以指定 MS_ERRORFILE 作为环境变量或通过 CONFIG 映射文件中的指令::

CONFIG  "MS_ERRORFILE" "/tmp/mapserver.log"

或:

CONFIG  "MS_ERRORFILE" "stderr"

如果两个 MS_ERRORFILE 设置了环境变量,并且一个 CONFIG MS_ERRORFILE 已设置,则 CONFIG 指令优先。

如果 MS_ERRORFILE 未设置,则禁用错误/调试日志记录。在分析映射文件期间,错误/调试日志记录可能仅在 MS_ERRORFILE 指令已被解析。

MS_MAP_NO_PATH

5.4 新版功能.

这个 MS_MAP_NO_PATH 可以将环境变量设置为任何值,以禁止在map=...中使用显式路径URL参数。设置 MS_MAP_NO_PATH任何价值 强制在mapserv CGI URL中使用map=<env_ariable_name>机制。

如果未设置此变量,则不会发生任何变化,并且mapserv CGI仍通过map=...接受显式文件路径。URL参数。

例如,set set MS_MAP_NOPATH 以及ApacheHTTPd.conf中的一些映射文件路径::

SetEnv MS_MAP_NO_PATH "foo"
SetEnv MY_MAPFILE "/opt/mapserver/map1/mymapfile.map"

然后调用mapserv cgi必须使用环境变量的map=...参数::

http://localhost/cgi-bin/mapserv?map=MY_MAPFILE&mode=...
MS_MAPFILE

映射=...时要使用的映射文件。未提供URL参数。

还可以使用环境变量名作为map=...的值。URL参数。此环境变量的值将用作映射文件路径::

map=ENV_VAR
MS_MAPFILE_PATTERN

MS_MAPFILE_PATTERN 可用于覆盖用于验证映射文件文件扩展名的默认正则表达式。

此变量的默认值为::

MS_MAPFILE_PATTERN='\.map$'
MS_MAP_BAD_PATTERN

7.6.3 新版功能.

这个 MS_MAP_BAD_PATTERN 环境变量可用于指定要捕获的正则表达式,并且不允许在任何传递到map=中的mapserv cgi的映射文件路径中出现有问题的字符序列...URL参数。如果值匹配,则会生成错误。默认情况下,所有MapServer安装(从7.6.3开始)都为设置硬编码值 MS_MAP_BAD_PATTERN 的:

[/\\]{2}|[/\\]?\\.+[/\\]|,

因此,它不允许在映射值中使用“/../”或“//”。

对于Windows用户,MS4W使用PCRE正则表达式库(它需要略有不同的正则表达式语法),因此所有未来的MS4W版本都将包含以下默认设置 MS_MAP_BAD_PATTERN 已启用(不允许映射值中有“/../”或“//”):

[\/\\\\]{2}|[\/\\\\]?\.{2,}[\/\\\\]|,

有关Windows的详细信息,请参阅 Securing your MS4W Installation

参见

限制 Mapfile 访问 关联(&A) Pull Request 对于7.6.3版本

MS_MAP_PATTERN

5.4 新版功能.

这个 MS_MAP_PATTERN 环境变量可用于指定一个正则表达式,该正则表达式必须与在map=...中传递到mapserv CGI的所有映射文件路径匹配。URL参数。

如果 MS_MAP_PATTERN 未设置,则可以加载任何.map文件。

可以使用ApacheSetEnv指令将映射文件限制到特定目录和子目录。

  • Unix用户 可以在Apache中设置以下表达式,以将映射文件限制为 /opt/mapserver 目录和子目录:

    SetEnv MS_MAP_PATTERN "^\/opt\/mapserver\/([^\.][_A-Za-z0-9\-\.]+\/{1})*([_A-Za-z0-9\-\.]+\.(map))$"
    
  • Windows Apache/MS4W users 我可以在Apacheconf文件中设置以下表达式,以将可能的map=路径限制为公共 C:/ms4w/apps/ 目录(所有MS4W Mapfile 和应用程序所在的目录),允许编码的URL,允许“。或MAP=路径中的“_”或“-”,但不允许“..”目录遍历:

    SetEnv MS_MAP_PATTERN "^(C:)?\/ms4w\/apps\/((?!\.{2})[_A-Za-z0-9\-\.]+\/{1})*([_A-Za-z0-9\-\.]+\.(map))$"
    

    备注

    MS4W用户可以在https://ms4w.com/README_INSTALL.html#securing-your-ms4w-installation上查看具体的示例

MS_MODE

模式的默认值=...URL参数。设置模式=...在URL中优先于环境变量。

MS_OPENLAYERS_JS_URL

OpenLayers Java脚本库的URL(可在使用ImageType应用程序/OpenLayers测试WMS服务时使用),例如::

http://openlayers.org/api/OpenLayers.js
MS_TEMPPATH

设置 WEB TEMPPATH

6.0 新版功能.

MS_XMLMAPFILE_XSLT

用于启用XML映射文件支持。指向用于XML->文本映射文件转换的XSLT的位置。

PROJ_LIB

这个 PROJ_LIB 环境变量或 CONFIG 指令可用于指定proj数据文件所在的目录(包括“proj.db”文件,或较早版本的proj版本中的“epsg”文件),如果它们不在proj期望它们的默认目录中。

备注

有关可能使用的项目变量的完整列表,请参阅 official list

参见

Setting the location of the epsg file 在……里面 错误