Skip to content
Sample application skeleton using the ZF2 MVC layer
Latest commit 57c1011 @Maks3w Maks3w Merge pull request #319 from websafe/master
Fixes #318 chef => bento



This is a simple, skeleton application using the ZF2 MVC layer and module systems. This application is meant to be used as a starting place for those looking to get their feet wet with ZF2.

Installation using Composer

The easiest way to create a new ZF2 project is to use Composer. If you don't have it already installed, then please install as per the documentation.

Create your new ZF2 project:

composer create-project -n -sdev zendframework/skeleton-application path/to/install

Installation using a tarball with a local Composer

If you don't have composer installed globally then another way to create a new ZF2 project is to download the tarball and install it:

  1. Download the tarball, extract it and then install the dependencies with a locally installed Composer:

    cd my/project/dir
    curl -#L | tar xz --strip-components=1
  2. Download composer into your project directory and install the dependencies:

    curl -s | php
    php composer.phar install

If you don't have access to curl, then install Composer into your project as per the documentation.

Web server setup

PHP CLI server

The simplest way to get started if you are using PHP 5.4 or above is to start the internal PHP cli-server in the root directory:

php -S -t public/ public/index.php

This will start the cli-server on port 8080, and bind it to all network interfaces.

Note: The built-in CLI server is for development only.

Vagrant server

This project supports a basic Vagrant configuration with an inline shell provisioner to run the Skeleton Application in a VirtualBox.

  1. Run vagrant up command

    vagrant up

  2. Visit http://localhost:8085 in your browser

Look in Vagrantfile for configuration details.

Apache setup

To setup apache, setup a virtual host to point to the public/ directory of the project and you should be ready to go! It should look something like below:

<VirtualHost *:80>
    ServerName zf2-app.localhost
    DocumentRoot /path/to/zf2-app/public
    <Directory /path/to/zf2-app/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
        <IfModule mod_authz_core.c>
        Require all granted

Nginx setup

To setup nginx, open your /path/to/nginx/nginx.conf and add an include directive below into http block if it does not already exist:

http {
    # ...
    include sites-enabled/*.conf;

Create a virtual host configuration file for your project under /path/to/nginx/sites-enabled/zf2-app.localhost.conf it should look something like below:

server {
    listen       80;
    server_name  zf2-app.localhost;
    root         /path/to/zf2-app/public;

    location / {
        index index.php;
        try_files $uri $uri/ @php;

    location @php {
        # Pass the PHP requests to FastCGI server (php-fpm) on
        fastcgi_param  SCRIPT_FILENAME /path/to/zf2-app/public/index.php;
        include fastcgi_params;

Restart the nginx, now you should be ready to go!

Something went wrong with that request. Please try again.