【发布时间】:2015-02-21 22:35:45
【问题描述】:
我在带有 IIS7 和 FastCGI 的 Windows Server 2008 上运行 php 5.5.12。
这是我得到的日志错误之一:
file_put_contents(): open_basedir restriction in effect. File(C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine 4.0.3\content\vod\test.smil) is not within the allowed path(s): (C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine 4.0.3\content\vod;C:\Windows\TEMP\;E:\webpage;C:\php) in E:\webpage\dev\vod\createsettings.php on line 41
这是我在php.ini 中的open_basedir 行:
open_basedir = "C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine 4.0.3\content\vod;C:\Windows\TEMP\;E:\webpage;C:\php"
如您所见,目标目录实际上是在open_basedir 中指定的,但它的行为就像是受到限制一样。
注释掉 open_basedir 并重新启动 IIS 不会导致任何错误,并且一切正常。
将目标目录更改为其他打开的目录之一(例如C:\Windows\TEMP)也可以正常工作,没有错误。
我在这里阅读了八页的问题,但没有看到匹配的问题。提前感谢您提供的任何帮助!
【问题讨论】:
-
我还应该补充一点,尽管可能实际上并不相关——如果目标文件已经存在,一切正常,没有错误。
-
您在尝试使用 PHP 和 C:\Program Files (x86) 时会遇到很多权限问题。如果您不了解 Windows 权限,我建议您在使用 PHP 时避免使用该目录。
-
我对 all 有很多不明白的地方,但我在 Windows 中很舒服(至少我认为)和对 vod 目录的有效权限似乎适合IUSR。 NTFS 权限问题会导致 open_basedir 限制错误吗?
-
是的,当没有为 PHP 用户正确设置权限时,我已经让它抛出了这个错误以及其他几个文件/文件夹错误。话虽如此,我已经添加了一个可能解决问题的答案。
-
决定只将目标目录移动到 C:\vod,一切正常,没有大惊小怪。不知道为什么 php 返回一个 open_basedir 限制错误,而实际上它可能是 NTFS 权限,但似乎确实如此。如果您提交您的建议作为答案,我很乐意将其标记为这样。谢谢!
标签: php iis-7 fastcgi open-basedir