#php
#php
Вопрос:
scandir(some path)
выдает неправильные имена файлов.
Когда я делаю ls папки, я получаю такие результаты, как
selected0_LjRNXtMpXn4_0:0:0.mp4 selected8054_YdZl86snmag_0:2:32.mp4
selected10_iJTkxI6WMbo_0:2:20.mp4 selected8056_jgABBaXQSK8_0:3:40.mp4
Однако scandir возвращает следующее:
S4XFWK~B.MP4
SDTP6P~D.MP4
SHTYF1~M.MP4
SX8WCA~J.MP4
Я дважды и трижды проверял, чтобы убедиться, что я ls
использую одну и scandir
ту же папку. Почему scandir
не возвращаются правильные имена файлов?
Обновление: компьютер под управлением scandir — это Windows server 2008 enterprise, компьютер, на котором хранятся файлы, работает под управлением fedora 20 с типом диска fuse.glusterfs
Комментарии:
1. Это так, но он возвращает имя файла, как будто оно хранится на диске. ls показывает вам расширенное «реальное» имя. Давным-давно имена файлов не могли содержать более 8 символов.
2. Из какой системы и, что более важно, файловой системы они поступают? Эти имена 8.3 — это почти, но не совсем то, что Windows генерирует для длинных имен файлов (я не видел букв, а не цифр после
~
before). Это файловый ресурс SAMBA или что-то подобное?3. @IMSoP Как мне проверить? Кроме того, я вставил подмножество всех файлов: некоторые файлы заканчиваются цифрой после ~, например
SHO16G~9.MP4
4. Windows server 2008 enterprise в системе, в которой запущен scandir
5. Файлы поступают с компьютера под управлением fedora 20, df—print-type указывает тип fuse.glusterfs
Ответ №1:
Нашел ответ. Имена файлов при просмотре из системы Linux содержали двоеточие :
, что не является допустимым именем файла Windows, поэтому они были заменены именами 8.3.