Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 文件权限-访问被拒绝_Php_Windows_File - Fatal编程技术网

Php 文件权限-访问被拒绝

Php 文件权限-访问被拒绝,php,windows,file,Php,Windows,File,我正在用php制作一个应用程序,我必须测试某些目录(比如说“abc”文件夹)的文件权限,我必须动态创建一个新文件,比如说“xyz”目录中的“文件”。。我希望“abc”能够被Web服务器读写(即666),为了能够在目录“xyz”中创建文件,我也在检查它的可读写模式(即666)。。。这是它打印的内容 xyz目录-777 abc目录-777 但是当我试着 $data = 'Some file data'; $fh = fopen($rootdir."\\

我正在用php制作一个应用程序,我必须测试某些目录(比如说“abc”文件夹)的文件权限,我必须动态创建一个新文件,比如说“xyz”目录中的“文件”。。我希望“abc”能够被Web服务器读写(即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将创建它。。不是吗?如果不会,我如何动态创建文件


有什么帮助吗

Windows/NTFS对文件权限使用ACL

在“文件属性”对话框的“安全性”选项卡中,您需要为用户提供“Internet来宾帐户([something]/IUSR_uuzyng])写访问权限或完全权限。你这么做了

  • 右键单击该文件
  • 单击“属性”
  • 单击“安全”选项卡
  • 查找用户:“Internet来宾帐户”
  • 设置必要的权限

如果您希望IIS能够创建文件,则需要确保在文件夹中正确设置了这些ACL。

Windows/NTFS使用ACL作为文件权限

在“文件属性”对话框的“安全性”选项卡中,您需要为用户提供“Internet来宾帐户([something]/IUSR_uuzyng])写访问权限或完全权限。你这么做了

  • 右键单击该文件
  • 单击“属性”
  • 单击“安全”选项卡
  • 查找用户:“Internet来宾帐户”
  • 设置必要的权限
如果希望IIS能够创建文件,则需要确保在文件夹上正确设置了这些ACL

如果文件不存在,则不会创建该文件。 要创建您需要使用的文件

$fh = fopen($rootdir."\\file.php","w");

参考这个

如果文件不存在,则不会创建该文件。 要创建您需要使用的文件

$fh = fopen($rootdir."\\file.php","w");



请参阅此

如何在Windows FS上设置八进制权限?这些是我从fileperms()获得的值……您是如何设置文件权限的?我没有设置任何文件权限。。就像我创建了这些文件夹。。。我检查了那里的文件权限。。八进制表示法是777…如何在Windows FS上设置八进制权限?这些是我从fileperms()获得的值…如何设置文件权限?我没有设置任何文件权限。。就像我创建了这些文件夹。。。我检查了那里的文件权限。。八进制表示法是777…实际上没有问题,为什么它显示777?在给予用户完全控制权之后,我能够在一些现有文件中写入数据。。如果文件不存在,它将显示以下错误:消息:fopen(C:\inetpub\wwwroot/file.php)[function.fopen]:无法打开流:没有这样的文件或目录如果您不知道,php最初是为*nix操作系统开发的(POSIX合规性等)。所以当它在Windows下运行时,并不完全是1比1。正如您注意到的,使用目录分隔符。你在用什么操作系统?Windows95?你能验证“Internet来宾帐户”是否具有“完全控制权”吗?正如我所说,这可能与Linux/Windows有关。与其检查文件权限,不如检查文件是否可写,这是您正在执行的操作。is_writable返回相同的结果。。。即使权限不超过666。。它返回true..:(但当您尝试写入文件时,会出现故障。您正在检查上述代码中的错误。请参阅此错误:没有实际问题,这就是为什么它显示777权限,而不是?在授予用户完全控制权后,我可以在某个现有文件中写入数据。。如果文件不存在,则显示此错误:消息:fopen(C:\inetpub\wwwroot/file.php)[function.fopen]:无法打开流:没有这样的文件或目录如果您不知道,php最初是为*nix操作系统开发的(POSIX合规性等)。因此,在Windows下运行时,它不完全是1比1。正如您注意到的,使用目录分隔符。您使用的是什么操作系统?Windows95?您能验证一下吗“Internet来宾帐户”具有“完全控制权”?如我所说,这可能与Linux/Windows有关。与其检查文件权限,不如检查文件是否可写,这就是您正在执行的操作。is_writable返回相同的结果…即使权限不大于666..返回true..:(但是当你尝试写入文件时,你会失败。你在上面的代码中检查这个错误。看到这个错误:Hey Thank a ton!!但是第一个问题保持不变..为什么fileperms()显示777而实际上不是!fileperms()的确切输出是什么Hey Thank a ton!!但是第一个问题保持不变..为什么fileperms()显示777实际不是时显示777!fileperms()的确切输出是什么
$fh = fopen($rootdir."\\file.php","w+");