这是由opcache错误引起的吗?php-fpm执行代码已过时

时间:2016-12-20 08:45:15

标签: php laravel-5.3

今天我遇到一个奇怪的问题:

我们的项目需要联机新模块

当我在在线环境中执行artisan down并访问该网站时,我发现它没有显示维护页面,它还显示主页

我检查CheckForMantenance中间件是否添加到全局路由中间件,down中的storage/framework文件是否存在

我执行php index.php它返回维护页面,但当我从browncurl访问该网站时,它会显示主页

我也在测试服务器和本地运行,一切运行良好

我为测试middlware添加了一个新路由,并访问curl和brown使用的url,结果为404,找不到路由

我认为它可能是由路由器缓存引起的,但是在bootstrap / cache或storage / framework上没有缓存文件,因为我never打开了路由器缓存!

我不知道,所以我修改索引文件,在顶部添加写头功能,并重定向到错误html,发生了疯狂的事情,它也显示主页!!!!!!

发生什么事了?我确定项目路径是正确的

最后我重新加载php-fpm并恢复正常,维护视图工作,重定向网址工作和路由正常

我现在还不明白,但我想这可能是由opcache造成的?

我打开opcache ext,并使用默认设置;

ENV:

laravel: 5.3 
nginx: 1.8.1
php-fpm: 7.0.9 with opcache ext

1 个答案:

答案 0 :(得分:0)

首先检查你的fpm日志,通常会在通知之间弹出(检查调试/日志级别):

[01-Mar-2017 23:59:45] NOTICE: [pool www] child 16951 started
[01-Mar-2017 23:59:48] WARNING: [pool www] child 14754 
  exited on signal 11 (SIGSEGV - core dumped) after 4393.427133 seconds 
  from start

不幸的是,您必须禁用opcache。自从php 5.5一直到7.1以来我一直看到这个问题,你也会在错误日志中找到这些:

2017/03/02 10:00:24 [error] 30498#30498: *170523 upstream timed out    
   (110: Connection timed out) while reading response header from upstream, 
   client: 81.243.144.1xx, server: fake.test.pro, 
   request: "POST /api/users/53e4203cfd1c46e08d5b570c2c93ff86/items HTTP/1.1", 
   upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock", host: "fake.test.pro", 
   referrer: "http://fake.test.pro/console"

特别是Laravel,但我也在wordpress安装上看过它。当我在所有版本的php-fpm

上禁用opcache时它会停止

此问题上有错误报告但到目前为止还没有修复。我总是这样做:

[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=0

/etc/php/7.*/fpm/php.ini文件。然后我的应用程序再次强大,它花费我们150毫秒。它糟透了。