- Faster deployments, because the runtime environment is built from precompiled binaries via Heroku's "vulcan"
- Supports both the latest 5.3 and 5.4 versions
- Uses the memory of the dyno more efficiently by going with NGINX and PHP-FPM.
- Supports Composer out of the box
- No writing NGINX configuration files: supports Classic PHP, Silex and Symfony 2 apps with simple configuration driven by your
composer.json
. - Zero-Configuration Symfony 2 deployment.
- Basic provisioning
- NGINX Configuration for frameworks
silex
andsymfony2
- Reading configuration from
composer.json
- NGINX 1.2 or 1.3
- PHP 5.3 or 5.4
- PHP-FPM
This buildpack detects apps when the app has a composer.json
in the
app's root.
Configuration is done via a file named composer.json
in the app's
root.
A simple configuration could look like this:
{
"name": "my-app",
"require": {
"php": ">=5.4.0",
"silex/silex": "~1.0@dev"
},
"extra": {
"heroku": {
"document-root": "web",
"index-document": "index.php"
}
}
}
This configures an app with the document root set to the project's web
directory, and sets that all requests should go through web/index.php
which contains the application's front controller.
This buildpack supports configuration through directives placed in the heroku
key in the extra
object.
Default: Null
Use a framework preset for configuration. Some configuration keys cannot be overriden!
Available presets:
silex
(needsdocument-root
andindex-document
set)symfony2
Example:
"framework": "silex"
Document root relative to the app root. Defaults to the app root.
"document-root": "web"
Default: "index.php"
Index Document relative to the document root.
"index-document": "app.php"
Set PHP and NGINX versions.
To launch the app with PHP 5.3.23 and NGINX 1.3.14:
"engines": {
"php": "5.3.23",
"nginx": "1.3.14"
}
See also:
Default: []
Add directives to the php.ini
.
"php-config": [
"display_errors=off",
"short_open_tag=on"
]
Status: Not Implemented
Default: []
Run console commands on slug compilation.
"compile": [
"php app/console assetic:dump --env=prod --no-debug"
]
Is detected when the app requires the symfony/symfony
package or when the
extra.heroku.framework
key is set to symfony2
in the composer.json
.
This framework preset doesn't need any configuration to work.
Is used when the app requires the silex/silex
package or when the
extra.heroku.framework
key is set to silex
in the composer.json
.
Options:
index-document
: With Silex apps, this should be the file where$app->run()
is called. All requests which don't match an existing file will be forwarded to this document.
The classic PHP configuration is used as fallback when no framework was detected. It serves every .php
file relative
to the document root.
You need the following tools to hack on this project:
s3cmd
from http://s3tools.orgvulcan
from Heroku viagem install vulcan