「ヘテムル」 × 「PHP7.0」 × 「Laravel5.2」 ~Out of memory 対処など ~

ども、dog-earsです。

前回、途中まですすめていた 「laravel開発日記 第2章」 なのですが、 Composerのuploadで、Out of memory が出る問題が発生し、 止まっていました。

で、いろいろ手を尽くすも解決できず、困り果てていたところに、ヘテムルのPHP7.0対応のニュースが!

■ヘテムル PHP7.0に対応
http://heteml.jp/info/detail/id/1590

php7.0ならば、メモリ消費量が少ないらしいので、いけるんじゃね・・・と、一縷の望みを託してやってみたたところ、無事いけそうな感じになったので、導入についてまとめたいと思います。
今回、ヘテムル使ってない人には、あまり意味ないかもね(汗)

(1)laravelのインストール SSHでヘテムルに接続。
Composerは、以前、自前でインストール済みなので、create-projectで、インストールするのですが、普通にcomposer(または、php composer.pharなど)では、php5.4で動いてしまいます。
そのため、以下のコマンドでphp7.0でComposerを実行します。

php7.0 /[composerのインストールパス]/composer create-project --prefer-dist laravel/laravel [プロジェクト名]

実行すると、インストールが進むのですが、最後にエラーが出ます。
これは、インストール後に呼び出されるコマンドがphp ~で書いてあるためなので、composer.jsonの中の記述を修正します。

■composer.json

    "scripts": {
        "post-root-package-install": [
            "php7.0 -r \"copy('.env.example', '.env');\""
        ],

以下、同じようにphp ~となっているところをphp7.0に書き換えます。
で、最後に、composer.update・・・もとい

php7.0 /[composerのインストールパス]/composer update --profile

これで、エラーもなく、無事終了しました。
うーん、いちいちパス付で呼び出すのがめんどくさいな・・・。
エイリアス作るか、それともヘテムルがデフォルト7.0になるのを待つか・・・。

(2)requireの追加 composer.jsonで、以下の記述を追加してます。

    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*",
        "laravelcollective/html": "5.*",
        "doctrine/dbal": "~2.3",
        "setasign/fpdi-tcpdf": "1.*"
    },

追加したのは、
・laravelcollective/html ⇒htmlヘルパー的なもの。
・doctrine/dbal ⇒migrateで、カラムを修正する際に必要。
・setasign/fpdi-tcpdf ⇒PDFの作成・出力に必要。

で、updateしてみたところ、無事インストール完了!

–profileオプションつけて、メモリ使用量を確認したところ、 php.5.4では、約250MBだったのですが、 php7.0では、約150MBでした!!
すごいぞ!PHP7.0!! メモリ消費量が少ないとは聞いていましたが、 まさかここまでとは・・・! (インストールしているlaravelのバージョンが違うとかもあるかもですが)

無事、laravel5.2がインストールされましたので、 改めてここに「laravel開発日記 第2章」のアプリを移植したいと思います。 移植がひと段落したら、また記事にまとめようと思います。 ということで、今回はここまで。
それでは、また次回。