PHP scandir возвращает неправильные имена файлов

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