Setting up WAMP for Zend Framework Projects

A ZF project would not run out of the box on a fresh installation of WAMP. The purpose of this guide is to act as a checklist for the experienced, and a step by step guide for the more inexperienced. Before we start, this article is written based on WampServer 2.0i with Zend Framework 1.10. If you are using earlier versions, the steps should work, but you might want to consider upgrading to the newest.

  1. Make sure Wamp is running ok
  2. Enable virtual hosts, mod_rewrite, and override in ‘httpd.conf’
  3. Set up virtual host in ‘httpd-vhosts.conf’
  4. Check include paths for  the Zend library
  5. Add Custom URLs in host file

1. Make sure Wamp is running ok

Navigate to http://localhost on your favorite browser, you should see the WampServer welcome screen with headings “Server Configuration”, “Tools”, “Your projects” etc. If not, check your Wamp installation before proceeding further.

2. Enable virtual hosts, mod_rewrite, and override in ‘httpd.conf’

For a default 2.0i installation, the apache configuration file can be found at ‘C:\wamp\bin\apache\Apache2.2.11\conf’. After making a backup, open it in notepad and search for “vhosts”. Make sure the line

# Include conf/extra/httpd-vhosts.conf

is uncommented by removing the “#” in front.

Next, look for the line

# LoadModule rewrite_module modules/mod_rewrite.so

and uncomment it too.

Lastly, look for

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    # Deny from all
</Directory>

and make sure AllowOverride is set to All instead of none. This prompts Apache to apply rules found in the .htaccess files in sub directories. Save and close.

3. Set up virtual host in ‘httpd-vhosts.conf’

Look for the file in ‘C:\wamp\bin\apache\Apache2.2.11\conf\extra’. Make a copy for backup and open it in notepad. The file should already have 2 dummy <VirtualHost> entries which you can safely remove. Now we will add the default virtual host and your own custom host:

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "c:\wamp\www"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "C:\wamp\logs\apache_error.log"
    CustomLog "C:\wamp\logs\access.log" common
</VirtualHost>

Note: replace the parameters below with your own project paths.

<VirtualHost 127.0.0.1:80>
    ServerAdmin admin@customurl.localhost
    DocumentRoot "C:\My\Project\Path\public"
    ServerName customurl.localhost
    ServerAlias customurl.localhost
    ErrorLog "C:\My\Project\Path\logs\apache_error.log"
    CustomLog "C:\My\Project\Path\logs\access.log" common
</VirtualHost>

Update: if you get a “You don’t have permission to access” error when accessing the page, include the following directive right before the </VirtualHost> tag:

<directory "C:\My\Project\Path\public">
allow from all
</directory>

4. Check include paths for  the Zend library

Your app probably runs alright now. If you are getting the file not found error when including the Zend library, make sure you have copied the Zend library into your /library folder and your index.php actually combines it with the PHP include path:

set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path()
)));

Edit: As Fernando pointed out, take note to use slashes “\” instead of back slashes “/” on windows. Also, include your custom urls in your host file if they are not a subdomain of localhost:

5. Add Custom URLs in host file

Your host file is located at ‘C:\Windows\System32\drivers\etc’. Its a file without extension, but you can open it with notepad just the same. Add the following line to the end:

127.0.0.1 [Custom URL here]

That’s it. If you are unsure of the steps or meet any other problems feel free to email me. Tested using WampServer 2.0i with Zend Framework 1.10.

  • Share/Bookmark

Related posts:

  1. Sending email using gmail’s smtp with Zend Framework
  2. Installing XDebug on Virtualmin
  3. Unzipping files using PHP
  4. Apache Error #28 – No space left on device

4 Responses to “Setting up WAMP for Zend Framework Projects”


  • Hi Ryan, good tutorial. I have two comments to do.

    1- If you are under windows, you have to put the paths with this “/” bar.

    For example, in this lines:

    DocumentRoot “c:\wamp\www”
    ErrorLog “C:\wamp\logs\apache_error.log”
    CustomLog “C:\wamp\logs\access.log” common

    change it like this:

    DocumentRoot “c:/wamp/www”
    ErrorLog “C:/wamp/logs/apache_error.log”
    CustomLog “C:/wamp/logs/access.log” common

    Otherwise, the apache server won’t start.

    2- For virtualhosts, apart of changing “httpd-vhosts.conf”, you have to set the hosts file of the OS.

    Path -> C:\Windows\System32\drivers\etc\hosts

    something like this:

    127.0.0.1 customurl # customurl ZF project

    See you,
    Fernando.

  • Thanks Fernando, overlooked them back slashes and host file =)

  • Hi there,

    I wanted to install ioncube to locally test some softwares and since what I was doing did not work, I thought that maybe it was something to do with Zend not being activated in Wamp. I followed your instructions, step by step, but I have a question about the last step. You mention to change the info for our own stuff, and here I am at lost (I am a real beginer trying to make things work for me).

    Can you please give me an actual example of what I should change the line below for?

    ServerAdmin admin@customurl.localhost
    DocumentRoot “C:\My\Project\Path\public”
    ServerName customurl.localhost
    ServerAlias customurl.localhost
    ErrorLog “C:\My\Project\Path\logs\apache_error.log”
    CustomLog “C:\My\Project\Path\logs\access.log” common

    Should the “my” be replaced by “wamp” and then the name of the particular website I want have Zend activated for? What should “customurl” replaced for? The actual website name ? the folder’s name on wamp?

    Other question: if I have more than one website that I want to test, do I have to create a virtual host for each?

    I hope my questions will not bore you. I must say that I am navigating in a field that I really don’t master.

    Thanks

  • Frédérique, the document root should be the absolute path to the folder containing your website’s public files. e.g. is your index.php residing at “C:\My\Project\Path\public” ?

Leave a Reply