PHP build, runtimes and extensions update

Change effective on 08 July 2014

Composer version selectors for language runtimes are now fully supported. For example, a selector like ~5.5.0 will (at the time of this changelog entry) select PHP version 5.5.14; so would a selector like >=5.3.3. Our language support documentation has been updated to accurately describe the various scenarios of version selection.

All requests for Composer platform dependencies (meaning the php and hhvm runtime packages, and ext-... extension packages) are now read from composer.lock, if it exists. If no composer.lock exists (because the project has no userland package requirements), information from composer.json is used instead.

Notwithstanding this change, a request for the HHVM runtime that only exists inside composer.json is currently still honored at this time; this is because Composer is currently exhibiting a bug where it does not save the requirement to composer.lock, and also to allow users without HHVM installed locally to test deployments using HHVM on Heroku.

For example, when using ~5.5 as the version constraint for php in composer.json, running composer update, adding hhvm for testing purposes with version >=3.1 to composer.json and then committing and pushing without another composer update (to get around having to install HHVM locally) will yield the following result:

-----> Resolved composer.lock requirement for PHP ~5.5.0 to version 5.5.14.
-----> Resolved composer.json requirement for HHVM >=3.1 to version 3.1.0.

PHP version 5.6.0RC2 is now available as a runtime. To select it, you can use a stability flag in your version constraint (e.g. ~5.5@RC) and run composer update to re-generate composer.lock. Upon a push, Heroku will then set up your runtimes accordingly:

-----> Resolved composer.lock requirement for PHP ~5.5@RC to version 5.6.0RC2.

Finally, the apcu extension has been updated to version 4.0.4, and the newrelic extension has been updated to version 4.10.1.62.

Please refer to our Heroku PHP Support article for more details and examples.