しかし日本はいつまで「本番」という言い方するんでしょうか。この業界に入って間もない頃は日活ロマンポルノの撮影現場かと思いました。英語の技術書を読んでいるとProductという言い方が一般的なので(日本のプログラミング技術は99%が欧米産です。)かなり違和感ありました。にも関わらず「本番」なのです。JAVAなんかみたいなコンパイルが必要なシステムではデプロイという言い方もあるのですが、PHPerなんかはデプロイなんてしたことないので疎遠。(実際にデプロイしないし。)
というわけで開発環境から本番環境にする方法です。
Symfony2では開発環境と本番環境を簡単に入れか言えることができます。開発環境ではすべてのデバックとキャッシュの削除、ルーティングの一括管理や詳細なログなど様々な開発機能が付与されている代わりに動きが遅いです。これは当たり前です。しかし本番環境はそれらをすべて最適化しているので爆速です。
Symfony2の開発環境
すべてのアクセスはapp_dev.phpに対して行います。[Symfony2のインストール先]/web/app_dev.php
この設定はweb/app_dev.phpを開いてみて26行目辺りに、
$kernel = new AppKernel('dev', true);
というのがあります。trueになっているときは開発環境が有効になっています。ルーティングされたパス(URI)はapp_dev.phpにアクセスしたときに開発環境として動作します。開発環境を閉じる際にはfalseを設定します。
$kernel = new AppKernel('dev', false);
これで開発環境にアクセスすると画面が真っ白になります。
Symfony2の本番環境
Symfony2を本番化するときは、app.phpにアクセスを行います。[Symfony2のインストール先]/web/app.php
デフォルトでは無効になっています。web/app.phpの21行目あたりを見ると、
$kernel = new AppKernel('prod', false);
となっています。これをtrueにすると本番環境となり、app_dev.phpなしの美しいURIでアクセスできるようになります。
$kernel = new AppKernel('prod', true);
とても簡単です。なんかいいですね。これ。
ちなみになんか動作が期待通りに動かないという場合には、
開発環境では、
php app/console cache:clear --no-warmup
本番環境では、
php app/console cache:clear --env=prod --no-debug
というようにキャッシュを削除してみましょう。