wordpres报错sfile_exists() [function.file-exists]: File name is longer than the maximum allowed

fugui 2月前 104

file_exists() [function.file-exists]: File name is longer than the maximum allowed path length on this platform怎么办?

在升级 WordPress4.9.6 中文版之后,昨天新发布了一篇标题比较长的文章,再点击该文章后,发现内容页的页头就报这么个错。“File name is longer than the maximum allowed path length on this platform (260)”这个错误大概意思是“文件名称超过了这个平台所允许的最大长度限制”,用人话说就是文章标题字数大于Windows限制的文件名字数。因为此错误,我大概了解了一下,全部出现在Windows平台搭建的PHP环境中,而Linux中不曾有过这种情况的发生。

那就让人有点奇怪了,为什么以前没有出现这个错误呢?

我部署博客用的是 windows server 2008 的平台,PHP5.6+Apache2.4+Mysql5.7,理论上来讲不应该出现这个字符限制的。一开始我怀疑是不是php.ini的配置出了问题,因为 file_exists() 函数毕竟是在php的环境下运行,后来也觉得不太对,以前的配置完全可以正常运行,什么问题都没有。难道是 file_exists() 的算法是在 WordPress4.9.6 的个别php文件中新增的?

如果是这样的话,php.ini中根本没有类似限制字符长度的配置,有的只是一些模块读写、目录权限及文件大小之类的配置。

究其本质是因为文章标题别名过程,WordPress的发布会通过自动生成以标题为文件名的临时php文件,但中文标题转义后太长就会在Windows系统中报错。若只是单篇文章报错,可以直接通过后台→所有文章→快速编辑→修改别名来解决。

一劳永逸的方法是:

WordPress目录wp-includes/template.php中的

single-{$object->post_type}-{$object->post_name}.php
替换为
single-{$object->post_type}-{$object->post_id}.php


最新回复 (0)
返回
发新帖