我跟着Fideloper post关于使用hhvm一步一步地运行laravel
。我的服务器上托管了两个项目,一个是基于wardrobe(laravel 4.1)的博客,另一个是基于laravel 5的项目。
我的博客没有服务器错误和laravel日志文件的问题;但是其他项目无法创建日志文件,因此不会显示错误页面。
我仔细检查了storage
文件夹权限。它是777
。
当我运行php artisan serve
(本机php,而不是hhvm)并浏览到它时,出现错误页面,并创建了日志文件。所以我认为hhvm有问题。
如何使用laravel 5
运行hhvm
并发生错误,如何修复空白页?如何恢复错误页面(或呐喊页面)
P.S。我已阅读this之类的相关问题但仍有问题。
P.S.S。如果有任何需要的信息问我,我会更新问题。
答案 0 :(得分:3)
当我使用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
让我们将环境sessons设置为数组:
.env 中的
SESSION_DRIVER=array
(您可能还需要清除 storage / framework / sessions 中的所有随机会话文件)
现在我们对Laravel包源的任何更改都会立即反映出来。让我们更新HandleExceptions类中的一些内容:
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]);
}
...
现在在您的路线文件夹中键入随机垃圾(无分号),您将看到致命的显示。我现在已经在Laravel github上向泰勒reported this issue了。如果你在Lumen,我会得到solution here,直到Lumen也被修复。
答案 1 :(得分:-1)
我也遇到了同样的问题。授予755
整个laravel项目的权限,这对我有用
无论如何你可以查看hhvm错误日志,运行
$tail -n 50 -f /var/log/hhvm/error.log