我们的服务器上看到“损坏”的opcache。知道怎么解决?

时间:2017-07-31 08:38:20

标签: php opcache

我们看到一个奇怪的问题,我一直在努力解决。

我们不时地对我们的服务器进行部署,并且一台服务器将按照以下行开始将错误流入日志中,

require_once(): Failed opening required '/var/www/CrrrectPath/Abstract.php' 
(include_path='/var/www/') in /var/www/CorrectPath/Object.php on line 2

问题并不总是include()。有时,方法名称会以相同的方式被破坏(单个字符被另一个字符替换)。

在生产中调试受影响的服务器后,我可以看到文件本身绝对正常。我的直觉是文件的opcache在某种程度上被破坏了。

我们启用了“validate_timestamps”,所以我认为在rsync中间重新读取文件是合理的(我们从部署文件夹到“live”文件夹的r-sync) 。然后我们禁用了“validate_timestamps”,当代码完全被rsynced时,我们正在执行opcache_reset()。这个问题确实发生得不那么频繁,但我们仍然看到了事件。

还有其他人遇到过这个问题吗?任何解决方案的建议(除了彻底改变我们的部署方式)?

有关信息,

$ php -v
PHP 7.0.21-1~ubuntu14.04.1+deb.sury.org+1 (cli) (built: Jul  6 2017 09:38:10) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.21-1~ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies

由于

1 个答案:

答案 0 :(得分:1)

看来这个问题/类似于以下PHP错误

https://bugs.php.net/bug.php?id=71135

我们在部署时重新启用“validate_timestamps”和执行opcache_reset()。希望这能解决问题。