PHP可读失败,但opendir可以工作

PHP可读失败,但opendir可以工作,php,Php,基本上是锡上写的: if(is_dir($dir)) echo $dir . " is a directory\n"; if(is_readable($dir)) echo $dir . " is readable\n"; if($this->handle = opendir($dir)) echo $dir . " opened\n"; 返回: \\HTPC\MOVIES是一个目录 \\HTPC\电影已打开 哪个是威德?我可以遍历目录中的文件,但显然它不可读

基本上是锡上写的:

if(is_dir($dir))
    echo $dir . " is a directory\n";

if(is_readable($dir))
    echo $dir . " is readable\n";

if($this->handle = opendir($dir))
    echo $dir . " opened\n";
返回:

\\HTPC\MOVIES是一个目录

\\HTPC\电影已打开

哪个是威德?我可以遍历目录中的文件,但显然它不可读。就像我说的,我仍然可以阅读文件,但我觉得有点奇怪


有人有什么想法吗?

检查您的安全策略如果您想阻止进入目录,请寻找绕过遍历检查或类似的方法

若它绕过了该检查,那个么可以进入acl禁止的目录,但内容无法读取


如果为整个树仔细正确地设置和选择了ACL,则通常不需要触摸它。

这似乎是权限错误。分配给该特定文件夹的是一个家庭组。家庭组实际上没有在网络上使用。删除家庭组并重新添加用户组后,返回true。opendir返回true但不可读,这仍然很奇怪。您肯定会期望一些不可读的东西在打开时失败


谢谢你们的帮助。

HTPC机上的操作系统是什么?是windows吗?我不确定,但可能是因为windows文件系统(FAT或NTFS)的缘故,您可能有“列出内容”的权限,但不允许“阅读”!你在跑什么?IIS?只是在另一台计算机上运行xamp,我猜这一定是某种权限问题,因为同一台计算机上不同驱动器上的另一个目录在所有3次检查中都返回true:/甚至认为是指opendir,它似乎对您有效。讨论中提出的答案可能也解决了您的问题。这种情况是否适用于所有驱动器和驱动器不仅仅是一个?这是安全策略功能,同时适用于整个系统。它是全局启用或禁用的,它不提供或带走真正的安全性。如果您的ACL是为整个树仔细而正确地设置和选择的,那么您通常不需要触摸它
是可读的()
只是
stat
的一个薄薄的包装,所以它肯定是一些权限问题;看到这些信息如此具有误导性,仍然感到惊讶:)