LoginSignup
5
5

More than 5 years have passed since last update.

Laravel4.2+HHVMでのバグっぽい挙動

Last updated at Posted at 2014-06-03

ちょっと面白い現象に遭遇したので、日本語での共有をば。

どういう状況で何が起こったのか?

現在、Laravel4.2とHHVMで開発をしていたのですが、
その際に何故かblade.phpの{{{ }}}や{{ }}が<?php echo 〜 ?>に置換されないという問題を発見しました。

原因は?

何故そのようなことが起こるかというと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を使われる方はウォッチしとくといいかもしれません。

[追記]
対応完了したようです!

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5