我在php中创建一个应用程序,我必须测试某些目录(比如说“abc”文件夹)文件权限,我必须动态创建一个新文件,让我们在目录“xyz”中说“file”..我希望“abc”可以被webserver(即666)读写,并且为了能够在目录“xyz”中创建文件,我也检查它是否可读写模式(即666)......这就是它版画 xyz目录 - 777 abc目录 - 777
但是当我尝试
时$data = 'Some file data';
$fh = fopen($rootdir."\\file.php","r+");
if ( !fwrite($fh,$data))
{
//echo $rootdir;
echo 'Unable to write the file';
}
else
{
echo 'File written!';
}
fclose($fh);
$ rootdir包含文件夹“xyz”的地址...它显示以下错误
消息:fopen(C:\ inetpub \ wwwroot \ file.php)[function.fopen]:无法打开流:权限被拒绝
正如我所说的C:\ inetpub \ wwwroot文件权限是777 ..而且最初file.php不存在但是fopen会创建它..不是吗?万一它不会,我怎么能动态创建文件?
有任何帮助吗?
答案 0 :(得分:1)
$fh = fopen($rootdir."\\file.php","r+");;
如果文件不存在,将不会创建该文件。 要创建文件,您需要使用
$fh = fopen($rootdir."\\file.php","w");
或者
$fh = fopen($rootdir."\\file.php","w+");
请参阅此this
答案 1 :(得分:0)
Windows / NTFS使用ACL来获取文件权限。
在文件属性对话框“安全”选项卡中,您需要为用户提供“Internet访客帐户([something] / IUSR_ [something])”写访问权限或完全权限。你做到了吗?
如果您希望IIS能够创建文件,您需要确保在文件夹上正确设置了这些ACL。