2

有什么方法可以识别文件夹是否是 Windows 系统上 PHP 的连接点?甚至获取目标的路径/名称?

is_link或者realpath不支持。

谢谢!

4

1 回答 1

0

是的,通过使用lstat(),请参阅http://php.net/manual/de/function.lstat.php

它返回一个数组,其中包含有关文件名(dir/junction)的信息。您需要将密钥mode与某个位掩码进行比较。

modest_mode在底层操作系统层中等于。该_stat结构定义在SYS\STAT.H. 它包括一个字段st_mode

关于st_mode位掩码:

文件模式信息的位掩码。如果 path 指定目录,则设置 _S_IFDIR 位;如果 path 指定普通文件或设备,则设置 _S_IFREG 位。用户读/写位根据文件的权限模式设置;用户执行位根据文件扩展名设置。

     * #define  _S_IFDIR    0x4000
     * #define  _S_IFREG    0x8000

引自:https ://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions?view=vs-2017


isJunction()的 PHP 实现:https ://github.com/composer/composer/blob/master/src/Composer/Util/Filesystem.php#L654-L678

警告在对 Windows 进行最新更改后,这非常脆弱。请参阅https://www.bountysource.com/issues/53997655-composer-update-is-deleting-pathed-windows-symlinked-local-repos-again-ref-4955

于 2019-02-02T16:04:37.920 回答