Browse files

feature #4591 Instructions for setting SYMFONY_ENV on Heroku (dzuelke)

This PR was merged into the 2.3 branch.


Instructions for setting SYMFONY_ENV on Heroku

Much smoother sailing with that step included :)

On a related note, I was going to add general advice on using `SYMFONY_ENV`, as it is currently very under-documented (just one aside mention at, but I wasn't sure where to do this. Maybe in `cookbook/configuration/environments.rst` and a few other places?


576bbfb remove first person as per feedback
579fdd6 capitalize section title as per feedback
5f987ff instructions for setting SYMFONY_ENV on Heroku for smooth deploys
  • Loading branch information...
weaverryan committed Dec 6, 2014
2 parents 727c92a + 576bbfb commit db35c4242a724325cb6ae7f0dbb42ed769ae1f88
Showing with 26 additions and 2 deletions.
  1. +26 −2 cookbook/deployment/heroku.rst
@@ -71,8 +71,9 @@ Deploying your Application on Heroku
To deploy your application to Heroku, you must first create a ``Procfile``,
which tells Heroku what command to use to launch the web server with the
correct settings. After you've done that, you can simply ``git push`` and
you're done!
correct document root. After that, you will ensure that your Symfony application
runs the ``prod`` environment, and then you'll be ready to ``git push`` to
Heroku for your first deploy!
Creating a Procfile
@@ -110,6 +111,27 @@ create the ``Procfile`` file and to add it to the repository:
[master 35075db] Procfile for Apache and PHP
1 file changed, 1 insertion(+)
Setting the ``prod`` Environment
During a deploy, Heroku runs ``composer install --no-dev`` to install all of the
dependencies your application requires. However, typical `post-install-commands`_
in ``composer.json``, e.g. to install assets or clear (or pre-warm) caches, run
using Symfony's ``dev`` environment by default.
This is clearly not what you want - the app runs in "production" (even if you
use it just for an experiment, or as a staging environment), and so any build
steps should use the same ``prod`` environment as well.
Thankfully, the solution to this problem is very simple: Symfony will pick up an
environment variable named ``SYMFONY_ENV`` and use that environment if nothing
else is explicitly set. As Heroku exposes all `config vars`_ as environment
variables, you can issue a single command to prepare your app for a deployment:
.. code-block:: bash
$ heroku config:set SYMFONY_ENV=prod
Pushing to Heroku
@@ -193,3 +215,5 @@ You should be seeing your Symfony application in your browser.
.. _`ephemeral file system`:
.. _`Logplex`:
.. _`verified that the RSA key fingerprint is correct`:
.. _`post-install-commands`:
.. _`config vars`:

0 comments on commit db35c42

Please sign in to comment.