繁体   English   中英

PHP FastCGI open_basedir 对 IIS 7 的限制

[英]PHP FastCGI open_basedir restriction on IIS 7

我在一台服务器上有两个环境,它们通过 EnvironmenteVariable 分开。 这部分工作起来很有魅力(两个带有 open_basedir 的 FastCGI 池已设置到 ApplicationHost

<application fullPath="C:\\path\\to\\php\\php-cgi.exe" arguments="-d open_basedir=C:\\path\\to\\webroot\\ENV_DIR">

和相关的 web.config

<add name="php" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\\path\\to\\php\\php-cgi.exe|-d open_basedir=C:\\path\\to\\webroot\\ENV_DIR" resourceType="Unspecified" requireAccess="Script" /> )。

问题始于对其他文件夹的 open_basedir 限制 - 例如\\\\path\\to\\network\\folderC:\\path\\to\\webroot\\FOLDER (位于环境文件夹之外)。 如何启用对这些文件夹的访问?

试过:

  • 使用 open_basedir="multiple;folders" 分隔每个环境的 php.ini 文件
  • 将多个文件夹添加到 web.config 和 applicationHost 文件到如下参数:

'... open_basedir="C:\\path\\to\\webroot\\ENV_DIR;C:\\path\\to\\webroot\\FOLDER"'

没有任何帮助。

好的,找到了解决办法。 也许其他人也需要它。 不要使用 open_basedir,而是使用 doc_root(仅限 IIS,如果没记错的话,PHP 选项)。 以下是示例:

applicationHost.conf文件:

<application fullPath="C:\\path\\to\\php\\php-cgi.exe" arguments="-d doc_root=C:\\path\\to\\webroot\\ENV_DIR">

和相关的web.config

<add name="php" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\\path\\to\\php\\php-cgi.exe|-d doc_root=C:\\path\\to\\webroot\\ENV_DIR" resourceType="Unspecified" requireAccess="Script" />

通过这种方式,您可以:

  • 设置基于实例的环境变量(Linux 下的 .env);
  • 能够包含和/或使用实例根文件夹之外的目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM