memori

Alternative facts

Heroku で PHP を使うときに HHVM 使うのが一番ラクかも知れない件(未検証)

こんにちは。これは、ちょっとした興味から Heroku で PHP 使おうと思った僕の記録です。 実際には別に何かのアプリを動かしたわけではないので、ちゃんと動くのかどうか知りませんが、Heroku で PHP 動かしたい人の参考に成るかもしれないので。

というわけで、Heroku です。ぼくはいつも node で作ったアプリをデプロイするのにめちゃくちゃ活用してるんですが、ふと PHP 動かすのってどうしたらいいんだっけなと思いまして。以前は Facebook アプリ経由で作るのが一番楽ちんで、Facebook アプリの作成画面から Heroku でホスティングするチェックボックスPHP 選ぶだけだったんですが、どうやら今はもうこの機能ないみたいなので、どうしようかなと。

まあそもそも mbstring どうするねんっていう話もあって、通常 Heroku で PHP を使いたいときは @hokkai7go が書いてる Heroku での PHP アプリとビルドパックの連携方法 のようにして PHP の Buildpack を fork して mbstring 有効にして... みたいな手順を踏む必要があります。やってらんない、っていうかなんで mbstring を標準で入れておかねーんだ。

正直、PHP を使う理由ってのはもはや「気軽に動く」というところくらいしか僕にはないので、こんなことやってらんないんですよ。少なくとも 2 度目があったら覚えてる自信がない。

なんか他の方法ないかなあと思ってて思い出しました HHVM

HHVM を Heroku で使う方法があるだろうと思って調べてみたらありました。hhvm のリポジトリで buildpack が公開されています。

これを使ってアプリケーションをつくるには

cd /some/app/dir
heroku create --buildpack https://github.com/hhvm/heroku-buildpack-hhvm
git init .
git remote add heroku git@heroku.com.........

// index.php つくる
echo "<?php phpinfo();" > index.php

git add index.php
git commit -m "initial commit"
git push -u heroku master

こんなかんじです。カンタン。 HHVM でどういう変数、クラス、関数が定義されてんのかなってのを知りたかったので サンプルページ を設置してみました。mb_ 系関数もあるようなので、普通に動きそう。

これで例えば、最近のフレームワークとかでよくある app.php とかをエントリポイントにして、rewrite して全部のリクエストをこいつにする。みたいなやつは config.hdf ってのを書けば良いようです。

Server {
  DefaultDocument = index.php
}

VirtualHost {
  * {
    Pattern = .*
    RewriteRules {
      dirindex {
        pattern = ^/(.*)/$
        to = index.php
        qsa = true
      }
    }
  }
}

普通の PHP よりも早くて手軽、となるとこれ、 HHVM on Heroku の時代が来ちゃうかもですね!!

誰か実際に何かしらのアプリ動かしてどうなるか教えてください!