我希望在生产环境中完全禁用错误报告,因为我们有一些非常老的代码仍然需要修复,但目前可以正常工作(是的,我也不喜欢它)。我们无法在几天内修复所有问题,所以我们需要像以前一样抑制警告和异常。
真正的问题是,它已经在一个简单的懒惰错误上抛出了异常(因为变量未定义)。
if(!$var) {
// do whatever
}
尝试过
APP_DEBUG=false
APP_LOG_LEVEL=emergency
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
某个控制器.phppublic 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_DEBUG=false
吗? - aynberindex_old.php
在required
表达式中覆盖了你的设置。 - Alex Slipknot