完全在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', 'somecontroller@controllerFunc');

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' => [
       \App\Http\Middleware\SuppressExceptions::class,
],

参考方案

是的,您可以更改错误报告。实际上,该框架提供了一个拦截异常的地方:App\Exceptions\Handler。默认情况下,render方法会将抛出的异常转换为HTML响应。 APP_ENVAPP_DEBUG值将仅更改此错误响应的呈现方式(基本上,是否在异常堆栈跟踪上有详细信息)。

尝试将render方法更改为

public function render($request, Exception $exception)
{
    if ($exception instanceof ErrorException) {
        error_reporting(0);

        $kernel = app(\Illuminate\Contracts\Http\Kernel::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 = Illuminate\Http\Request::…

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' => …