我曾经在Laravel 5中通过以下方式在生产中运行true调试:
'debug' => env('APP_DEBUG', $_SERVER['REMOTE_ADDR'] == 'myipaddress' ? true : false),
但是Laravel 6不允许我使用它,当我使用artisan config:cache时,artisan抱怨变量$ _server ['REMOTE_ADDR']没有定义并且存在。
还有其他人发现正在使用Laravel 6进行此操作的方法吗?
您无法缓存动态配置。 Laravel尝试缓存您的配置时,没有请求,也没有$_server
。
您必须禁用生产调试(APP_DEBUG = false
)并检查日志中是否有任何错误。
但是,如果您坚持要动态启用应用程序调试,则可以使用中间件:
使用Artisan命令创建新的中间件:
php artisan make:middleware EnableDebug
此命令将在您的EnableDebug
目录中放置一个新的app/Http/Middleware
类。像这样修改它:
<?php
namespace App\Http\Middleware;
use Closure;
class EnableDebug
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
config(['app.debug' => $request->ip() === 'myipaddress']);
return $next($request);
}
}
在$middleware
类的app/Http/Kernel.php
属性的末尾列出您的中间件类:
protected $middleware = [
//...
\App\Http\Middleware\EnableDebug::class,
];