在文件夹内我有一个名为
的文件`111-aaaaaa aa aaaa-,._aaaaaaa; aaaaaaaa, aa aaaaaaaaaa, aaaaaaaaa aaaaaaaa. 03.01.10. 38.38 aaaaa.txt`
当我使用PHP浏览该目录(或尝试读取该文件)时:
var_dump(glob('MyFolder/*'));exit;
它无法找到该文件。有什么问题? (如果我缩短文件名,那么它就变得可以了。我在Windows上)
答案 0 :(得分:5)
Windows特别是在其原始Win32 API中具有非常短的文件名限制。讨论了这个一般性问题here at SO。
在Win32上的绝对路径中最多可以使用大约260个字符。在其他平台上还有其他限制,但预计至少会有512个字符,而且更多的是不是闻所未闻的。
(例如,在GNU HURD中,文件长度有效is no limit,即使基础文件系统可能会施加限制。)
然而,Windows实际上可以有更长的文件名(显然,就像你在计算机上拥有它们一样)。这可以通过使用更新的Windows API来实现。不幸的是,据我所知,标准PHP不使用此API。
有modified版本的PHP使用这个较新的Windows API over at Github。
使用这个较新的API的另一个好处是它还支持文件名中的Unicode字符。
答案 1 :(得分:1)
尝试scandir()
它在数组中显示列表文件。
答案 2 :(得分:1)
从PHP 7.1开始,Windows上的long和UTF-8路径直接支持在核心。
干杯。