【问题标题】:PHP FastCGI open_basedir restriction on IIS 7IIS 7 上的 PHP FastCGI open_basedir 限制
【发布时间】:2021-01-20 06:57:20
【问题描述】:

我在一台服务器上有两个环境,它们通过 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 只能有 1 个目录名称,而不是文件夹名称的分号列表。
  • 在php.ini文件中,你可以添加更多:在windows下以;分隔并在linux下由:分隔。这就是为什么我问,有没有办法。由于某种原因,符号链接也不起作用(无法解决)
  • 您甚至可以将它们分开添加任何您喜欢的东西.....但是是否有目的还不得而知! ??????

标签: php iis-7 fastcgi


【解决方案1】:

好的,找到了解决方案。也许其他人也需要它。不要使用 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);
  • 能够包含和/或使用实例根文件夹之外的目录。

【讨论】:

  • 请标记答案,以便帮助其他有类似问题的人。
  • 还有 19 小时的时间去做(我猜评分不够高)
猜你喜欢
  • 2012-02-21
  • 2014-12-04
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2010-11-27
  • 1970-01-01
  • 2010-09-18
相关资源
最近更新 更多