На компьютере с Windows следующий сценарий:
<?php
mkdir("c:\\[test]");
file_put_contents("c:\\[test]\\test.txt", "some content");
chdir("c:\\[test]");
echo getcwd()."\n";
var_dump(glob('*'));
?>
Отображает это:
C:\[test]
array(0) {
}
Когда это ожидается:
C:\[test]
array(1) {
[0]=>
string(8) "test.txt"
}
Я понимаю, что glob
обрабатывает скобки как специальные символы, при обнаружении в параметре шаблона
.
Шаблон *
соответствует любому файлу в текущем рабочем каталоге. Однако glob ()
ведет себя так, как если бы он был запущен с шаблоном c: \\ [test] \\ *
Скобки затем интерпретируются как часть шаблона, когда на самом деле они являются частью каталога.
Предполагается, что glob
обрабатывает путь как часть шаблона ? Я бы предпочел использовать текущий каталог в качестве начальной точку, а затем обработать только шаблон .
(Попытка подвести итоги): Функция glob
действует так, как будто она получает c: \\ [test] \\ *
в качестве шаблона соответствия, и пытается сопоставить либо c: \ t \ *
, c: \ e \ *
или c: \ s \ *
. Но на самом деле шаблон *
, и он не должен пытаться сопоставить что-либо из этого.