有没有办法切换“隐藏”或“只读”使用 PHP 打开 Windows 文件?
更新
正如标题所说,有没有办法使用 PHP 在 Windows 上切换“隐藏”或“只读”开关?
如果可能的话,我希望在不打开 shell exec()
的情况下执行此操作。
UPDATED
As the title says, is there a way to toggle the "Hidden" or "Read-Only" switch on Windows using PHP?
I'd like to do this without opening a shell exec()
if possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
文件无法隐藏,它始终位于文件系统中。 *NIX 约定,对于某些操作(如 ls 命令),默认情况下不会显示以
.
开头的文件,但前提是您不够仔细查看。 Windows 也是如此,但 Windows 使用文件元属性来处理它。您可以/应该做的是使用文件权限使没有业务访问它的任何人都无法访问该文件夹/文件。使用
chmod
,chown
和chgrp
从 PHP 执行此操作。不过,您可能需要了解一些有关正确文件系统权限的知识。A file can't be hidden, it's always in the file system. There's the *NIX convention that files starting with a
.
are not shown by default for certain operations (like thels
command), but only if you don't look hard enough. The same goes for Windows, but Windows handles it with file meta attributes.What you can/should do is use file permissions to make the folder/file inaccessible to anybody who has no business accessing it. Use
chmod
,chown
andchgrp
to do so from PHP. You may have to learn a bit about proper file system permissions though.要在 Windows 上使文件“隐藏”,您可以使用
要在 Windows 上使文件“只读”,您可以使用
要从 PHP 使用这些命令,您只需使用 system 或 exec 执行它们。
另请参阅:Attrib< /a>
To make a file "hidden" on Windows you can use
To make a file "read-only" on Windows you can use
To use these commands from PHP you just execute them using system or exec.
Also see : Attrib
虽然网上有一些报告称 PHP 的 chmod 确实能够设置 Windows 属性标志(至少是只读标志),但我根本无法重现这一点。
因此,使用
attrib
命令是正确的选择。在 Windows 和 *nix 上为只读
下面是一些将文件设置为只读的代码,该代码将在 Windows 和 *nix 上运行:
提示:
将“/”替换为“\”非常重要,因为 shell 命令 (
attrib
) 不像 PHP 那样能够容忍斜杠。$res 在 Windows 部分中未设置,因为 exec() 会附加到任何现有值。
Windows 上的隐藏
如果您想将文件设置为隐藏,这可能是仅限 Windows 的任务:
While there are some reports on the web that PHP's chmod would indeed be able to set Windows attribute flags (at least the read-only flag) I could not reproduce this at all.
So shelling out to an
attrib
command is the way to go.READ-ONLY on Windows and *nix
Here is some code to set a file to read-only that will work on Windows and *nix:
Hints:
Replacing '/' with '\' is important as the shell command (
attrib
) is not as tolerant to slashes as PHP is.$res is unset in the Windows part because exec() appends to any existing value.
HIDDEN on Windows
If you want to set a file hidden, this would probably be a Windows only task:
在 Linux/Unix 上,您可以通过在文件名开头添加点 (
.
) 来隐藏文件,并使用chmod
函数使文件只读。不确定 Windows 的情况。On Linux/Unix you can make the file hidden by putting a dot (
.
) at the start of its name, and use thechmod
function to make the file read-only. Not sure about Windows.对于文件权限,请尝试
chmod
函数:更多信息:http: //php.net/manual/en/function.chmod.php
For the file permissions, try
chmod
function:More here: http://php.net/manual/en/function.chmod.php