我們正在努力解決一個奇怪的問題。我們在服務器上看到「損壞」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」文件夾作爲我們部署的一部分)是合理的。然後,我們禁用了「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
感謝
也許它是隨機的,但''失敗打開必需'/ var/www/CrrrectPath/Abstract.php' - 它是'typo'嗎? 'CrrrectPath'的第二個字母是'r'而不是'o'? –
@AntonisTsimourtos這不是一個錯字。這是真正的問題,我們得到的錯誤。因此,我相信該文件的opcache被損壞或什麼的。 –