根据PHP documentation,模式...
递归匹配所有子目录,但是当我尝试使用它时,没有文件匹配。
根据文档,glob
自PHP 5.1起就没有更改,但是如果有关系,我正在使用PHP 7.2.24。
目录结构:
.
├── bar
│ └── bar_file
└── foo
├── 1
│ └── foo_1_file
└── foo_file
PHP:
var_dump(glob('./.../*')); // prints array(0) {}
var_dump(glob('./.../foo_file')); // prints array(0) {}
我知道此问题有一个workaround,但我想知道是否有PHP本机解决方案,否则,为什么PHP参考文档有缺陷。
PHP UNIX implementation从标准C库委托给GLOB(3)。在Linux上,最有可能是glibc,它不支持递归syntax。
PHP Windows implementation不支持目录递归
PHP test suite中的所有glob测试都不包含涵盖三点(...)语法的测试。
根据the change的提交消息,它在PHP文档中引入了glob模式语法,特殊字符的列表基于djgpp libc库支持的字符。 djgpp manpage指出三点语法是对旧VMS功能的致敬。
...递归匹配所有子目录(VMS爱好者,很高兴!)。
所有这些都是有力的证据,除非PHP在支持它的平台上运行,例如PHP,否则文档中列出的递归语法将不起作用。在DOS或旧Windows上使用DJGPP。