PHP:识别Windows上的连接点(PHP5 / Apache 2.4)

时间:2015-07-29 08:30:03

标签: php windows hyperlink junction

有没有办法识别文件夹是否是Windows系统中PHP的连接点?甚至可以获得目标的路径/名称?

is_linkrealpath不支持。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

关于st_mode位掩码:

  

文件模式信息的位掩码。该_S_IFDIR位设置,如果路径   指定目录;如果path指定一个_S_IFREG位置1   普通文件或设备。用户读/写位根据   文件的许可方式;用户执行位根据   文件扩展名。

     * #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