使用HHVM 3.1.0(最新版本)在Ubuntu 12.04上运行。 我刚刚尝试从Laravel 4.1更新到4.2,并且我遇到了一个非常奇怪的问题,即Blade视图无法正确编译。 Laravel日志中没有错误,所以我检查了HHVM日志。当尝试使用刀片加载存储的视图时,HHVM出现编译错误。我打开了存储的视图,发现Blade的不同用法没有正确编译。
原始刀片代码:
<head>
@include('layouts.partials._favicon')
</head>
<body id="signup-rotate">
@include('layouts.partials._flash-messages')
...
编辑错误:
<head>
<?php echo $__env->make(, array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>('layouts.partials._favicon')
</head>
<body id="signup-rotate">
<?php echo $__env->make('layouts.partials._flash-messages', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>
...
正如您所看到的,标题中的代码由于某种原因没有添加要包含在函数中的视图,并将其追加到最后。这显然导致HHVM无法编译代码,并引发错误。我觉得很奇怪,其中大部分包括工作,但其他人都没有。
这是Laravel 4.2的一个已知问题,还是在我的情况下有什么独特之处会导致这种情况?看起来Blade也缺少一些标签,因此我的视图文件显示时会有随机的刀片语法(如果需要,我可以提供一些代码示例)。
更新 这实际上是一个已知问题,并且已在Laravel和HHVM git存储库中报告。 它显然已在HHVM nightlies中修复,并将在下一版本中正常工作。
答案 0 :(得分:1)
由于搜索结果非常高,因此可能值得注意的是,HHVM 3.2.0版本确实已经解决了这个问题。
如果你仍然坚持发布&lt; 3.2.0由于某种原因,我能够通过找到HHVM抛出错误的行(检查日志文件)并添加{{ "" }}
来处理它。您提到的GitHub问题更详细地解释了这一点,但似乎Blade解析导致某些语句落在数组边界上 - &#34; fix&#34;我提到只需将您的Blade代码推送到下一个阵列。它并不漂亮,但如果你需要,它会起作用。