当出现错误而不是抛出异常时,Laravel 5刀片显示空白页面

时间:2015-03-05 12:29:51

标签: php exception laravel views blade

在laravel 4中,当您尝试渲染 app \ views 中不存在的视图或带有未定义变量的视图时,laravel将抛出异常或显示有助于调试的错误。

我有一个全新安装的laravel 5.0.13并且我很难对刀片模板进行故障排除,当我渲染一个不存在的视图或一个带有未定义变量的模板而不是抛出异常时显示一个空白页面调试时会出现错误。

我安装了filp / whoops:~1.0。但仍然收到一个空白页

class ProfileController extends Controller
{

    public function index()
    {
        return view('indexx'); //this view does not really exist
    }
}

我的资源/视图中不存在 indexx 文件,我希望Laravel会抛出异常,但我会得到一个空白页面,为什么?

此外,当我渲染存在一些未定义变量的视图时,我只是得到一个空白页

示例:

类ProfileController扩展Controller {

    public function index()
    {
        return view('index'); //this view exists
    }

}

资源/观点/索引的内容

{!! $this_variable_was_not_passed_an_I_expect_error !!}

正如您在上面的视图文件中看到的那样,laravel不存在变量只会显示一个空白页而不是抛出异常或一些调试错误。

另请注意我在config / views

中更改了laravel默认视图
'paths' => [ 
//realpath(base_path('resources/views')) 
realpath(base_path('resources/themes/default')) 
],

只要模板中没有错误,laravel就可以从资源/主题/默认渲染视图,但是如果遇到任何错误,那么未定义的变量laravel会显示空白页而不是显示错误消息

另外要提一下我在7号窗口安装虚拟盒和流浪汉

这可能是一个错误还是什么?请协助。

5 个答案:

答案 0 :(得分:7)

尝试更改存储文件夹的权限:

chmod -R 0777 storage

它对我有用。

答案 1 :(得分:1)

我真的不知道为什么会发生这种情况,但是在我运行

之后它现在正在按需运行

vagrant destroy摧毁宅基地VM

然后vagrant up - 创建VM

现在显示错误消息而不是空白页:

enter image description here

答案 2 :(得分:1)

帮助我的替代解决方案正在运行

composer install 

我使用git部署,自动忽略一些文件。运行composer install为我修复了它。

答案 3 :(得分:0)

我遇到了同样的问题,但原因和解决方案是: 存储/日志中的日志文件需要由Web服务器用户拥有/写入。否则L5会给你一个空白页面。

我总是以root身份运行“php artisan ...”。如果抛出异常并且Laravel创建了一个新的日志文件,则它由root拥有。在我的Debian上,我在项目根文件夹中运行: chown www-data.root * -R 解决这个问题。

答案 4 :(得分:0)

// lavarel 4 *将此添加到app / start / gobal.php

App::error(function(Exception $e, $code) {
            $runner = new \Whoops\Run;
            $inspect = new \Whoops\Exception\Inspector($e);
            $handler = new \Whoops\Handler\PrettyPageHandler;
            $handler->setRun($run);
            $handler->setInspector($insp);
            $handler->setException($e);
            return $handler->handle($e);
});

// lavarel 5 *将此添加到app / Exceptions / Handler.php

 public function render($request, Exception $exception)
 {
    ..........
            $runner = new \Whoops\Run;
            $inspect = new \Whoops\Exception\Inspector($e);
            $handler = new \Whoops\Handler\PrettyPageHandler;
            $handler->setRun($run);
            $handler->setInspector($insp);
            $handler->setException($e);
            $handler->handle($e);
     ......
    return parent::render($request, $e);
}