Expressive Skeleton and Installer
Begin developing PSR-15 middleware applications in seconds!
This installer will setup a skeleton application based on zend-expressive by choosing optional packages based on user input as demonstrated in the following screenshot:
The user selected packages are saved into
composer.json so that everyone else
working on the project have the same packages installed. Configuration files and
templates are prepared for first use. The installer command is removed from
composer.json after setup succeeded, and all installer related files are
Start your new Expressive project with composer:
$ composer create-project zendframework/zend-expressive-skeleton <project-path>
After choosing and installing the packages you want, go to the
<project-path> and start PHP's built-in web server to verify installation:
$ composer run --timeout=0 serve
You can then browse to http://localhost:8080.
On PHP versions prior to 7.1.14 and 7.2.2, this command might not work as expected due to a bug in PHP that only affects linux environments. In such scenarios, you will need to start the built-in web server yourself, using the following command:$ php -S 0.0.0.0:8080 -t public/ public/index.php
Setting a timeout
Composer commands time out after 300 seconds (5 minutes). On Linux-based systems, the
php -Scommand that
composer servespawns continues running as a background process, but on other systems halts when the timeout occurs.
As such, we recommend running the
servescript using a timeout. This can be done by using
composer runto execute the
servescript, with a
--timeoutoption. When set to
0, as in the previous example, no timeout will be used, and it will run until you cancel the process (usually via
Ctrl-C). Alternately, you can specify a finite timeout; as an example, the following will extend the timeout to a full day:$ composer run --timeout=86400 serve
If the installer fails during the
composer create-project phase, please go
through the following list before opening a new issue. Most issues we have seen
so far can be solved by
- Be sure to work with the latest version of composer by running
- Try clearing Composer's cache by running
If neither of the above help, you might face more serious issues:
Application Development Mode Tool
This skeleton comes with zf-development-mode. It provides a composer script to allow you to enable and disable development mode.
To enable development mode
Note: Do NOT run development mode on your production server!
$ composer development-enable
Note: Enabling development mode will also clear your configuration cache, to allow safely updating dependencies and ensuring any new configuration is picked up by your application.
To disable development mode
$ composer development-disable
Development mode status
$ composer development-status
By default, the skeleton will create a configuration cache in
data/config-cache.php. When in development mode, the configuration cache is
disabled, and switching in and out of development mode will remove the
You may need to clear the configuration cache in production when deploying if you deploy to the same directory. You may do so using the following:
$ composer clear-config-cache
You may also change the location of the configuration cache itself by editing
config/config.php file and changing the
config_cache_path entry of the
This section applies only if you cloned this repo with
git clone, not when you
installed expressive with
composer create-project ....
If you want to run tests against the installer, you need to clone this repo and
setup all dependencies with composer. Make sure you prevent composer running
--no-scripts, otherwise it will remove the installer and all
$ composer update --no-scripts $ composer test
Please note that the installer tests remove installed config files and templates before and after running the tests.
Before contributing read the contributing guide.