本文介绍了完全在Laravel生产中禁用错误报告? – php程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。
对技术面试,学习经验等有一些体会,在此分享。
我想完全禁用生产时的错误报告,因为我们有一些非常旧的代码仍需要修复,但现在可以正常工作(是的,我也不喜欢)。我们无法在几天之内解决所有问题,因此我们需要像往常一样限制警告和异常。
真正的问题是,它已经在一个简单的惰性错误上抛出了异常,例如(因为未定义var)
if(!$var) { // do whatever }
试过了
APP_DEBUG = false
APP_LOG_LEVEL =紧急
display_errors(false); set_error_handler(null); set_exception_handler(null);
但它仍然显示ErrorException
未定义的变量:script_name_vars_def
编辑:代码是这样的
web.php
Route::any('/someroute', '[email protected]');
somecontroller.php
public controllerFunc() { ob_start(); require '/old_index.php'; $html = ob_get_clean(); return response($html); }
这样,我们使用Laravel路由,而不必立即重写旧代码。
我知道我可以很容易地解决此警告,但是这些错误有很多很多,我们现在需要使用Laravel路由。稍后解决问题。
主意
在$dontReport
中使用一些通配符。
在正确的位置使用@
抑制
可以是http://php.net/manual/en/scream.examples-simple.php
编辑以说明中间件哪些步骤不起作用
1)创建中间件
php artisan make:middleware SuppressExceptions
2)写
SuppressExceptions.php
public function handle($request, Closure $next) { error_reporting(0); return $next($request); }
3)注册
laravel / app / Http / Kernel.php
protected $middlewareGroups = [ 'web' => [ AppHttpMiddlewareSuppressExceptions::class, ],
参考方案
是的,您可以更改错误报告。实际上,该框架提供了一个拦截异常的地方:AppExceptionsHandler
。默认情况下,render
方法会将抛出的异常转换为HTML响应。 APP_ENV
和APP_DEBUG
值将仅更改此错误响应的呈现方式(基本上,是否在异常堆栈跟踪上有详细信息)。
尝试将render
方法更改为
public function render($request, Exception $exception) { if ($exception instanceof ErrorException) { error_reporting(0); $kernel = app(IlluminateContractsHttpKernel::class); $response = $kernel->handle($request)->send(); return $kernel->terminate($request, $response); } return parent::render($request, $exception); }
基本上,这将关闭报告,然后尝试重新处理该请求。
在if
子句中,您可以检查所需的任何条件(异常的类别,严重性等)。捕获ErrorException
可能会满足您的需求,但是请注意,您可能无法通过这种方式从致命错误中恢复。
无论如何,您应该将其视为“概念证明” …对于非幂等请求,这种“重新处理”方法不是很好。相反,只需create a Middleware与
public function handle($request, Closure $next) { error_reporting(0); return $next($request); }
与以前一样,致命错误无法通过这种方式恢复。但是您可以显示一个自定义错误消息,该消息将此中间件与以前的异常处理程序方法结合在一起:
public function render($request, Exception $exception) { if ($exception instanceof FatalErrorException) { return view('fatal-error', ['exception' => $exception]); } return parent::render($request, $exception); }
检查对象是否已在集合中-Laravel – php
当我循环一系列不同的结果时,我希望将对象添加到新集合中。查询:$osRed = Item::where('category', 'Hardware') ->where(function ($query) { $query->where('operating_system', '…
Laravel 5错误报告抑制 – php
在Laravel 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = IlluminateHttpRequest::…
Laravel打印日志 – php
我正在尝试在控制台上打印日志:我输入了:use Log; 然后在控制器中使用 Log::info('test log'); 但它不打印任何日志。 参考方案 我认为您需要在运行后检查storage/logs/laravel.logLog::info('test log'); 希望这对您有帮助
Laravel迁移外键 – php
我正在尝试在Laravel中建立一些关系,我对关系和迁移有些困惑。这是我正在做的一个简单示例:Users -> has_many -> Cats 因此,我的用户迁移文件与Cats的关系如下:$table->foreign('cats_id')->references('id')->on(&…
如何在Laravel中通过路由名称获取带有名称空间的路由? – php
我有一条路线如下Route::group(['prefix' => '/entry', 'namespace' => 'acme'], function() { Route::get('add', [ 'uses' => …
最新评论