You must first sign up to be able to contribute.

How to "simply" use multiple SF Projects on one local machine MyWay


When I started my first own project (not that long ago) I always looked at the sources Fabien and the other developers published f.e. the admin_generator or askeet.

Therefore I downloaded the sources and found that symfony runs best when reached from a simple domain like (http://askeet/ and http://phpmyadmin and http://mysymfony01 a.s.o). Installing in subdirectories can give problems with the links to the images of f.e. the dtree.js

But how can I intersperse my Apache to take several domains and redirect them to the sf_directories as DocumentRoot?


First, like described in the book we add different vhosts to our apache2 in /etc/http/vhost.d and call them something like

  • phpmyadmin.conf
  • askeet.conf
  • mysymfony01.conf

Within these conf's, we write nearly what is suggested in the Howto configure a webserver chapter of the symfony book, but slightly different because there is not only one loopback device. Try it, look at or, all loop back to your own Apache2.

Therefore we now setup our VirtualHost (here Apache installed with mod_userdir) like:

  ServerName askeet
  DocumentRoot "/home/me/public_html/askeet/web"
  DirectoryIndex index.php
  Alias /sf /$data_dir/symfony/web/sf

  <Directory "/home/me/public_html/askeet/web">
   AllowOverride All
   Allow from All

the next project of course gets the

Then we edit our /etc/hosts file which should look like:         localhost         askeet         anotherproject

For Windows users: The hosts file is located at X:\WINDOWS\system32\drivers\etc\hosts where X is the letter of the drive windows is installed.

After restarting Apache now we can access our projects with

Extended Solution

If you have a lot of projects sharing the same host configuration, there is an even easier way to access them. Apache can be configured for something called Dynamically Configured Mass Virtual Hosting.

  • Create the directory /home/me/public_html/sym
  • Like described above create a new vhost file and include it.
  • Be sure that log_config_module is loaded.

This is my file vhost.sym.conf:

# ###
# Configuration file for mass hosting

LogFormat "%V %h %l %u %t \"%r\" %s %b" symcommon


  VirtualDocumentRoot   "/home/me/public_html/sym/%1/web"
  CustomLog             "logs/sym.access_log" symcommon
  ErrorLog              "logs/sym.error_log"
  <Directory "/home/me/public_html/sym/*/web">
    AllowOverride All
    Allow from All
  DirectoryIndex index.php
  Alias /sf /$data_dir/symfony/web/sf
 <Directory "/$data_dir/symfony/web/sf">
   AllowOverride All
   Allow from All

As you can see, this is almost the same configuration as above. The main difference is the use of VirtualDocumentRoot to locate the document root.

Restart your Apache to load the configuration. Remeber that you can use httpd -S to let Apache show he settings parsed from the configuration files.

Now you can set up new projects without restarting apache. The only manual step left is configuring your /etc/hosts for name resolution.

For testing we will set up two projects:

Change to the /home/me/public_html/sym/ directory. This is the root for the new projects.

   mkdir first
   cd first
   symfony generate:project first
   symfony generate:app frontend
   cd ..
   mkdir second
   cd second
   symfony generate:project second
   symfony generate:app frontend

Modify your /etc/hosts:   first.sym   second.sym

Point your browser to:

This configuration is not a replacement for the solution described above. They perfectly live side-by-side. I use the one-config-for-all-setup for quick setups, e.g. testing of new plugins in a clean environment and the one-config-per-host-setup if I need special configuration settings.