Есть ли способ узнать, является ли папка точкой соединения в PHP в системе Windows? Или даже получить путь / имя цели?
is_link
или же realpath
не поддерживаю это.
Спасибо!
Да, используя 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 устанавливается, если путь
указывает каталог; бит _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
Реализация PHP для isJunction (): 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
Других решений пока нет …