PHP: распознавание точки соединения в Windows (PHP5 / Apache 2.4)

Есть ли способ узнать, является ли папка точкой соединения в PHP в системе Windows? Или даже получить путь / имя цели?

is_link или же realpath не поддерживаю это.

Спасибо!

2

Решение

Да, используя 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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]