如何测试 Windows 上的文件是否可以从 PHP 中删除?
我忘记了 Windows 文件权限是如何工作的!
我正在编写一个 PHP 脚本,需要测试文件是否可删除。在 *NIX 类系统上,这只是测试文件所在目录是否可由当前进程写入的情况。但是,如何测试Windows服务器上的文件是否可删除呢?
I've forgotten how Windows file permissions work!
I'm writing a PHP script that needs to test whether a file is deletable. On *NIX-like systems, it's just a case of testing whether the directory the file is within is writable by the current process. However, how do I test whether a file on a Windows server is deletable?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 fileperms() 读取当前权限。然后,您可以使用 chmod() 修改权限(如果有)不符合您的标准。
Use fileperms() to read what the current permissions are. You can then use chmod() to modify the permissions if they do not meet your criteria.
它应该只是检查目录和文件是否可写并且文件未锁定的情况。
不幸的是,我不知道如何在没有阻塞调用的情况下检查锁是否存在。
如果您知道文件没有锁定,并且测试 is_writeable(dirname($file)) && is_writeable($file) 返回 true 并且您仍然无法删除该文件 - 那么我有兴趣知道为什么 - ACL 是什么?
It should just be a case of checking that both the directory and file are writeable and that the file is not locked.
Unfortunately there's no way I'm aware of to check for existence of locks without a blocking call.
If you know there's no locks on the file, AND testing is_writeable(dirname($file)) && is_writeable($file) returns true AND you still can't delete the file - then I'd be interested to know why - what are the ACLs?