在PHP中更改符号链接文件的chmod()和chown()函数

4

是否有PHP命令可以更改符号链接文件的访问权限/所有者,而不是指向符号链接的对象的访问权限/所有者?

从shell中,我可以执行以下操作:

$ mkdir adir
$ ln -s adir alink
$ chmod 0700 alink         -- changes permissions of directory adir
$ chmod -h 0700 alink      -- changes permissions of file alink

但我不知道除了通过调用shell(例如使用exec())之外,如何在PHP中完成最后一个操作。

1个回答

5

PHP不支持更改符号链接的权限(没有像lstatlchown函数一样的lchmod函数)。

Linux也不支持它

POSIX不需要lchmod,Linux也不提供它。在缺少lchmod的平台上,符号链接始终具有相同的默认权限,因此无法更改权限不是问题,因为您将要复制的源与新创建的符号链接目标具有相同的权限(0777)。

在支持lchmod的BSD上,只有0555位很重要(如果当前用户无法读取符号链接,则readlink()失败,并且如果当前用户无法在文件名解析期间搜索/执行符号链接,则所有其他系统调用都会由于未遵循符号链接而失败并返回ENOENT)。即使如此,它也仅适用于使用symperm选项挂载的文件系统中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接