如何在使用 scandir() 时跳过我无权读取/访问的文件,以避免所有记录的错误?
Posted
技术标签:
【中文标题】如何在使用 scandir() 时跳过我无权读取/访问的文件,以避免所有记录的错误?【英文标题】:How do I skip files which I don't have permission to read/access when using scandir(), to avoid all the logged errors? 【发布时间】:2020-12-28 03:55:47 【问题描述】:我使用scandir()
在计算机上搜索目录。我也试过DirectoyIterator
与exact 相同的结果(它似乎在内部使用scandir()
)。一些子目录显然具有特殊权限,因为它们会污染我的错误日志,例如:
scandir(C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Configuration,C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Configuration): Access is denied. (code: 5)
我不需要搜索该目录,但 scanddir()
可以根据目录名称或类似名称进行任何检查,例如 is_readable
或 continue
。
谁知道我没有“访问”权限的其他目录有多少?一个一个地命名它们很容易被证明是一场噩梦,这就是为什么我只想跳过那些会记录错误的东西。但即使我想一一命名它们,我也做不到,因为scandir()
显然无法对其进行配置。 (我可以从手册中看出。)
【问题讨论】:
所以现在你已经删除了这个问题的前 2 个副本。做得好。其中一个实际上有人试图帮助你 仅供参考:仅仅因为一个问题得到了答案并不意味着它没有资格获得其他答案或阻止您获得其他帮助。 请注意您在 cmets 中所说的话,除非您想获得一次禁营之旅。 首先告诉我们您为什么使用 php 来搜索 Windows PC。除了我遇到错误之外,给我们一些东西。 请解释您为什么要扫描到C:\Program Files
。如果我们知道我们要解决的问题,我们可以想出一个可用的解决方法
【参考方案1】:
您可以使用is_readable('C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Configuration')
来检查您是否有权限。如果没有,您需要确保该目录具有读取权限。
查看此链接:https://www.php.net/manual/fr/function.is-readable.php
【讨论】:
以上是关于如何在使用 scandir() 时跳过我无权读取/访问的文件,以避免所有记录的错误?的主要内容,如果未能解决你的问题,请参考以下文章