为什么可以';PHP找不到长文件名?

为什么可以';PHP找不到长文件名?,php,filenames,Php,Filenames,在文件夹中我有一个文件,名为 `111-aaaaaa aa aaaa-,._aaaaaaa; aaaaaaaa, aa aaaaaaaaaa, aaaaaaaaa aaaaaaaa. 03.01.10. 38.38 aaaaa.txt` 当我使用PHP浏览该目录(或尝试读取该文件)时: 它找不到那个文件。有什么问题吗? (如果我缩短了文件名,那么它将变得可查找。我在windows上)windows在其原始Win32 API中有一个非常短的文件名限制。讨论了这一普遍问题 Win32上的绝

文件夹中我有一个文件,名为

`111-aaaaaa aa aaaa-,._aaaaaaa;  aaaaaaaa, aa aaaaaaaaaa, aaaaaaaaa aaaaaaaa.   03.01.10.  38.38 aaaaa.txt`
当我使用PHP浏览该目录(或尝试读取该文件)时:

它找不到那个文件。有什么问题吗?
(如果我缩短了文件名,那么它将变得可查找。我在windows上)

windows在其原始Win32 API中有一个非常短的文件名限制。讨论了这一普遍问题

Win32上的绝对路径最多可以使用260个字符。在其他平台上还有其他限制,但至少512个字符是可以预期的,而且更多的字符也并非闻所未闻

(例如,在GNU HURD中,即使底层文件系统可能会施加限制,文件长度也会受到限制。)

然而,Windows实际上可以有更长的文件名(很明显,因为您的计算机上有它们)。这通过使用更新的Windows API来实现。不幸的是,据我所知,标准PHP没有使用这个API

有一个版本的PHP使用了这个较新的Windows API

使用新API的另一个好处是,它还支持文件名中的Unicode字符。

试试看
它是数组中的显示列表文件。

从PHP 7.1开始,Windows上的长路径和UTF-8路径在核心中直接受支持


干杯。

在Windows上,您有最大路径长度限制:@TOBIASK,我有这样的文件名,仅此而已。所以,如果你知道,发布解决方案,如果不知道,不要离题。嗨!不幸的是,我安装了您所指的扩展,以获得更长的路径支持,但它仍然存在bug。我测试了
fopen(“wfio://SHORTER_PATH)
它工作正常,但不是我的长途跋涉。“你知道吗?”大师说,不知道。您是否按照文档中的说明使用fullpath?除此之外。。。不是真的,抱歉。是的,我使用的是完整路径(我说“是”,因为我更改了备份方法,将路径存储在文件中并按顺序编号重命名),而Unicode(不是UTF-8)路径似乎受支持,但长路径仍然不受支持。不确定您的意思。UTF-16?事情就是我们所说的——UTF-8和long path。请检查升级并报告问题(如果您看到)。谢谢。有时候,不管怎样,即使是更新的PHP版本也无法使用长路径。但是,有时,原因可能与我们所想的不同。例如,有一个关于的bug(从7.3.10和更新版本开始修复),它可能与长路径的使用相一致。无论如何,最后的办法总是使用连接链接:
mklink/J“Short\Path”“Your\Very\Long\Path”
var_dump(glob('MyFolder/*'));exit;