ちょっと面白い現象に遭遇したので、日本語での共有をば。
どういう状況で何が起こったのか?
現在、Laravel4.2とHHVMで開発をしていたのですが、
その際に何故かblade.phpの{{{ }}}や{{ }}がに置換されないという問題を発見しました。
原因は?
何故そのようなことが起こるかというとvendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.phpの
compileEchos関数の引数として本来であればblade.phpの中身がまるっと渡されるはずなのですが、
確認してみると中途半端なところで途切れた状態で渡されていました。
protected function compileEchos($value)
{
// 引数の$valueをerror_logなどで確認すればよく分かる
$difference = strlen($this->contentTags[0]) - strlen($this->escapedTags[0]);
if ($difference > 0)
{
return $this->compileEscapedEchos($this->compileRegularEchos($value));
}
return $this->compileRegularEchos($this->compileEscapedEchos($value));
}
最初はLaravelのバグかと思いましたが、githubのissuesを調べてみると以下のissueが。
どうもHHVMのせいっぽいなーと思ったので、試しにapacheでやってみると
確かに正常に動作しました・・・
これに関してはHHVMの方で何とかしてもらうか別のWebサーバソフトを使うかの選択肢しか
ないですので、HHVMをどうしても使いたい!という方はHHVMのissuesを逐一確認した方がいいかもしれません。
上記のissueを立てていた方が、HHVMの方でも同じissueを立てられていましたので、
HHVMを使われる方はウォッチしとくといいかもしれません。
[追記]
対応完了したようです!