最近,我遇到了一个奇怪的错误,希望有人可以提供帮助。
我们在顶部使用LiteSpeed WebServer
和Nginx
,分别使用PHP 7.5
和MySQL 5
(好吧,WordPress是框架)。它可以很好地运行很多天。
突然在不同文件的这一行它致命了
include ("class-xxx.php");
错误日志显示
[02-Oct-2018 13:04:36 UTC] PHP Fatal error: require(): Failed opening required 'dlass-xxx.php' (include_path='.:/opt/cpanel/ea-php72/root/usr/share/pear') in /xxx.php on line N
我仔细检查了代码,发现文件名已声明为"class-xxx.php"
,但是服务器以某种方式尝试包含"dlass-xxx.php"
,因此它找不到文件并触发致命错误。
解决方案?我重新上传文件,它可以正常工作。但是随后,它在另一个文件中变得致命,在使用include的相似行中。
我注意到文件名中的第一个字符(例如“ c”)读取不正确,并且在文件的前(或后)移了1个字节,因此文件名是正确的。
例如
include "class-xxx.php" is parsed/read as "dclass-xxx.php"
include "page-xxx.php" is parsed"read as "opage-xxx.php"
...
这很奇怪。有人知道原因吗?它与LiteSpeed
或Nginx
或PHP 7. ?
它发生在PHP 7
上。仅仅是因为如果我切换到PHP 5.6
,就不会发生错误。
希望有人可以提供帮助。非常感谢。