短篇故事:
我在我的 php 脚本中遇到了 open_basedir 限制 - 一个简单的“将新文件写入磁盘的测试”脚本。在我看来,我的 open_basedir 设置正确并且文件位于正确的位置 - 但没有运气,每次都是同样的错误。我在此站点上搜索了类似的 open_basedir 问题,但我没有看到任何与此问题有关的问题 - 目录看起来正确但仍然抛出错误。
我对问题的猜测是:
1)open_basedir 不能像我认为的那样工作
2)我的设置错误,我只是没有看到它
3)实际上是别的东西,比如 IIS 读/写权限,等
4) ???
很长的故事:
我正在使用 PHP 处理 IIS 服务器,并且正在尝试使以下代码片段正常工作(一个简单的写入文件测试):
date_default_timezone_set('America/Chicago');
$myFile = 'testfile.txt';
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Some Text\n";
fwrite($fh, $stringData);
$stringData = "Some More Text\n";
fwrite($fh, $stringData);
fclose($fh);
这个 php 脚本位于我服务器上的 C:\inetpub\wwwroot\WEBDIRECTORY\test_write.php
这是我对 open_basedir 的 php.ini 设置:
open_basedir = c:\inetpub\wwwroot;c:\inetpub\wwwroot\WEBDIRECTORY
每当我打开脚本页面时,我都希望看不到任何输出,然后当我回来查看时,应该有一个新文件写入服务器。这就是我得到的:
警告:fopen():open_basedir 限制生效。文件(testfile.txt)不在允许的路径内:第 5 行 C:\inetpub\wwwroot\WEBDIRECTORY\test_write.php 中的 (c:\inetpub\wwwroot) 警告:fopen(testfile.txt): failed打开流:第 5 行的 C:\inetpub\wwwroot\WEBDIRECTORY\test_write.php 中不允许的操作无法打开文件
我尝试了很多排列:最初 open_basedir 行只是
open_basedir = c:\inetpub\wwwroot
......但这也不起作用。
我还尝试输入 testfile.txt 的绝对路径(c:\inetpub\wwwroot\WEBDIRECTORY\testfile.txt 等),而不仅仅是文件本身的名称,并且我不断收到相同的错误消息。
有任何想法吗?非常感谢你的帮助。