在composer / symfony ApcClassLoader自动加载文件名中出现奇怪的字母移位(位翻转?)

时间:2018-07-04 11:39:42

标签: php symfony composer-php autoload apc

我有一个非常奇怪的错误,我希望有人经历过类似的事情或有帮助我的想法。

我们有一个运行在虚拟集群上的Symfony应用程序。

现在,大约半年来第三次出现这个非常奇怪的错误:

服务器停止运行并显示500错误,当我搜索日志时,原因是自动加载器要加载文件,但是文件名中只有一个字母移位:

Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalErrorException: "Compile Error: require(): Failed opening required '/var/www/vendor/symfony/symfony/src/Symfony/Component/Form/ChoiceList/View/ChoicdListView.php' (include_path='.:/usr/share/php')" at /var/www/vendor/symfony/symfony/src/Symfony/Component/ClassLoader/ApcClassLoader.php line 112

因此,它尝试加载Choic d ListView.php而不是Choic e ListView.php

今天这件事发生了:

Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalErrorException: "Compile Error: require(): Failed opening required '/var/www/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LifecycleEuentArgs.php' (include_path='.:/usr/share/php')" at /var/www/vendor/symfony/symfony/src/Symfony/Component/ClassLoader/ApcClassLoader.php line 112

LifecycleE u entArgs.php而不是LifecycleE v entArgs.php

  • 操作系统是Ubuntu 16.04
  • 文件系统是虚拟机上的Ext4
  • 每次发生这种情况时,都没有人在服务器上部署任何东西,甚至没有使用SSH登录(最后一次部署是在两周前,服务器一直在运行)
  • 每次发生此问题都在/ vendor文件夹中
  • 每次将一个字母切换到下一个或上一个字母(N代替M或U代替V)
  • 我在symfony项目的整个/ var / cache文件夹中搜索了所有文件,但没有找到文件名
  • 我发现作曲家自动加载缓存文件的速度不够快,因此我没有检查该文件。
  • 每次群集中只有一台计算机受到影响,但是每次都受到不同的计算机。
  • 通过再次部署该错误已修复,直到几个月后,该错误将在另一个文件中发生。
  • 该错误仅发生在我们的生产集群中,并且不可复制

总而言之,Symfony每隔几个月尝试尝试使用错误的文件名加载文件,仅在群集中没有人碰过的一台计算机上。

有人知道这可能是什么吗?我怀疑这是一个symfony问题,可能是硬件故障吗?知道如何调试吗?

0 个答案:

没有答案