今天我遇到一个奇怪的问题:
我们的项目需要联机新模块
当我在在线环境中执行artisan down
并访问该网站时,我发现它没有显示维护页面,它还显示主页
我检查CheckForMantenance中间件是否添加到全局路由中间件,down
中的storage/framework
文件是否存在
我执行php index.php
它返回维护页面,但当我从brown
或curl
访问该网站时,它会显示主页
我也在测试服务器和本地运行,一切运行良好
我为测试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
答案 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毫秒。它糟透了。