PHP 中符号链接文件的 chmod() 和 chown()

4 php filesystems

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

从外壳我可以

$ mkdir adir
$ ln -s adir alink
$ chmod 0700 alink         -- changes permissions of directory adir
$ chmod -h 0700 alink      -- changes permissions of file alink
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在 PHP 中完成最后一个,除了调用 shell,例如使用exec().

Art*_*cto 5

PHP不支持更改符号链接的权限(没有lchmod的功能等lstatlchown功能)。

Linux也不支持它

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

在支持 lchmod 的 BSD 上,只有 0555 位重要(如果当前用户无法读取符号链接,则 readlink() 失败,如果当前用户无法搜索,则所有其他系统调用都会失败并显示 ENOENT,因为无法遵循符号链接/ 在文件名解析期间执行符号链接),即使如此,也只有在使用 symperm 选项安装的文件系统上。