使用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也缺少一些标签,因此在显示时,我的视图文件中将具有随机的Blade语法(如果需要,我可以提供一些代码示例)。
更新这实际上是一个已知问题,并且已在Laravel和HHVM git存储库中进行了报告。显然,它已在每晚HHVM中修复,并且将在下一发行版中正常运行。
由于这在搜索结果中占据了很高的位置,因此可能值得注意的是,从HHVM 3.2.0版本开始,该问题确实已得到修复。
如果出于任何原因您仍然停留在版本3.2.0以下,我都可以通过找到HHVM在其上引发错误的行(检查日志文件)并添加来进行处理{{ "" }}
。您提到的GitHub问题更详细地解释了这一点,但是似乎Blade的解析导致某些语句落在数组边界上—我提到的“修复”只是将您的Blade代码压入下一个数组。它不是很漂亮,但是如果您需要它可以使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句