区块链技术博客
www.b2bchain.cn

完全在Laravel生产中禁用错误​​报告? – php程序员分享

本文介绍了完全在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_ENVAPP_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' => …

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 完全在Laravel生产中禁用错误​​报告? – php程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们