Featured image of post Symfony4.4をGAE/phpで動かす

Symfony4.4をGAE/phpで動かす

Twitter ツイート Hatena Bookmark ブックマーク

GAE/php(Standard Environment)でSymfony4.4を動かす機会があったのでRun Symfony on App Engine standard environmentをみながらSymfonyを動かしました。

発生した問題

「composer install後のauto-scriptsでエラーになる」という問題が発生していました。
原因はauto-scripts実行時にAPP_ENVのdevとして実行されていることがでした。
composer installのオプションでは--no-devを指定しているのに、APP_ENVがdevなので存在しないclassのロードとかが入ってエラーになるということかと思います。

対策方法

composerは –no-dev オプションを付けてインストールしたかどうかを判定することができます。
$COMPOSER_DEV_MODEの環境変数に--no-devオプションがついてインストールされたば場合は0そうでなければ1が入ります。

ちなみに下記のような形のcomposer scriptは、composer 1.9.2 ではうまく実行できませんでした。

1
2
3
4
5
"scripts": {
    "post-install-cmd": [
        "[ $COMPOSER_DEV_MODE -eq 0 ] || echo devmode only"
    ]
},

そこでbin/auto-scripts.shを用意しました。

1
2
3
4
#!/bin/sh
if [ $COMPOSER_DEV_MODE -eq 1 ]; then
  composer auto-script
fi

そしてcomposer scriptのpost-install-cmd,post-update-cmdを修正

1
2
3
4
5
6
        "post-install-cmd": [
            "./bin/auto-scripts.sh"
        ],
        "post-update-cmd": [
            "./bin/auto-scripts.sh"
        ],

最後に

Run Symfony on App Engine standard environmentではcomposer scriptsを削除してdeployしろと書いてありましたが、ローカルからデプロイする場合はちょっと現実的ではない方法だったので苦労しました。
今回紹介した方法でなら、ローカルの環境を傷つけずにローカルからgcloud app deployが実行できます。

最後の最後に

今回奮闘したリアルタイムな情報はこちらになります。

参考

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。