laravel 5 在服务器错误上显示空白页(并且没有 laravel 日志),运行 hhvm 和 nginx

laravel 5 show blank page on server error (and no laravel log), running with hhvm and nginx

我关注了 Fideloper post about running laravel with hhvm, step by step. There are two projects hosted on my server, one is my blog which is based on wardrobe (laravel 4.1),还有另一个项目 laravel 5。

我的博客没有服务器错误和 laravel 日志文件的问题;但是另一个项目无法创建日志文件,因此不会显示错误页面。

我仔细检查了 storage 文件夹权限。是 777.

当我 运行 php artisan serve(本机 php,而不是 hhvm)并浏览到它时,出现了错误页面,并创建了日志文件。所以我认为 hhvm 有问题。

当运行宁laravel 5hhvm发生错误时,如何修复空白页?我怎样才能恢复错误页面(或糟糕页面)

P.S. 我已经阅读了 this 等相关问题,但问题仍然存在。

P.S.S. 如果需要任何信息,请问我,我会更新问题。

我也遇到了同样的问题。授予 755 对整个 laravel 项目的权限它对我有用

无论如何你可以检查 hhvm 错误日志,运行

$tail -n 50 -f /var/log/hhvm/error.log

我用 HHVM 安装 Laravel Homestead 时遇到了同样的问题。如果你在你的路由文件中输入一些随机的垃圾,比如 sdfkjl 你会得到一个空白页面(但是,如果添加分号 sdfkjl; 你会得到错误输出)。错误记录在 /var/log/hhvm/error.log 但它们不会转到浏览器,而只会得到一个空白页面。这似乎是 HHVM 的故意行为。它也出现 Laravel 尝试处理这些但没有捕获 HHVM 发送的一些致命错误。多亏了 this github issue 的线索,我决定对 Laravel 的 Foundation\Bootstrap\HandleExceptions.php 做一些细微的改动,看看我能否让它捕捉到所有这些致命问题:

首先,更新您的 /etc/hhvm/php.ini 并添加这些设置:

hhvm.server.implicit_flush = true
hhvm.error_handling.call_user_handler_on_fatals = true

在修改包源之前,让我们用这个 artisan 命令删除 vendor\compiled.php

$ php artisan clear-compiled

然后将环境会话设置为数组:

在你的 .env

SESSION_DRIVER=array

(您可能还需要清除 storage/framework/sessions 中所有看似随机的会话文件)

现在我们对 Laravel 包源所做的任何更改都会立即反映出来。让我们更新 HandleExceptions class:

中的一些内容

vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php

// **** Add this to hold fatal error
protected static $fatalError = null;

...

public function handleError($level, $message, $file = '', $line = 0, $context = array())
{

   // **** Add this, loads fatal error
   if ($level & (1 << 24)) {
        self::$fatalError = array(
            'message' => $message,
            'type' => $level,
            'file' => $file,
            'line' => $line
        );
    }   

    if (error_reporting() & $level)
    {
        throw new ErrorException($message, 0, $level, $file, $line);
    }
} 

...   

// *** Update this function so it can handle the fatal
public function handleShutdown()
{
    $error = error_get_last();

    if(self::$fatalError){
        $error = self::$fatalError;
    }

    if ( ! is_null($error) && $this->isFatal($error['type']))
    {
        $this->handleException($this->fatalExceptionFromError($error, 0));
    }
}

...

protected function isFatal($type)
{
    // *** Add type 16777217 that HVVM returns for fatal
    return in_array($type, [16777217, E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE]);
}

...

现在在您的路线文件夹中键入随机垃圾(无分号),您将看到致命的显示。我现在 reported this issue to Taylor on the Laravel github. If you are in Lumen, I've got a solution here 在 Lumen 也得到修复之前可以正常工作。