How do I get Xdebug to work on Heroku?
Nino Škopac
I just pushed a new deployment to a staging instance on Heroku which failed and now my site has a 500 error.
composer.json
{
"license": "proprietary",
"require": {
"php": ">=5.5.16",
"aws/aws-sdk-php": "2.*",
"ext-memcached": "*",
"ext-apcu": "*",
"ext-gd": "*",
"ext-gettext": "*",
"ext-mbstring": "*",
"ext-soap": "*",
"ext-mysql": "*",
"ext-xdebug": ">=2.4.0"
},
"require-dev": {
"heroku/heroku-buildpack-php": "*"
}
}
New PHP code:
// STARTS DEBUG
xdebug_start_function_monitor(['session_start']);
register_shutdown_function(function() {
var_dump(xdebug_get_monitored_functions(), ini_get('session.auto_start'));
});
// ENDS DEBUG
Heroku build log:
-----> PHP app detected
-----> Bootstrapping...
-----> Installing platform packages...
- php (5.5.38)
- ext-gd (bundled with php)
- ext-gettext (bundled with php)
- ext-mbstring (bundled with php)
- ext-mysql (bundled with php)
- ext-soap (bundled with php)
- ext-apcu (4.0.11)
- ext-memcached (2.2.0)
- apache (2.4.20)
- nginx (1.8.1)
! WARNING: Your 'composer.lock' is not up to date with the latest
changes in 'composer.json'. To ensure you are not getting stale
dependencies, run 'composer update' on your machine and commit
any changes to Git before pushing again.
-----> Installing dependencies...
Composer version 1.2.2 2016-11-03 17:43:15
Loading composer repositories with package information
Installing dependencies from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
- Installing symfony/event-dispatcher (v2.6.1)
Loading from cache
- Installing guzzle/guzzle (v3.9.2)
Loading from cache
- Installing aws/aws-sdk-php (2.7.12)
Loading from cache
Generating optimized autoload files
-----> Preparing runtime environment...
-----> Checking for additional extensions to install...
- New Relic detected, installed ext-newrelic
-----> Discovering process types
Procfile declares types -> web
-----> Compressing...
Done: 112.1M
-----> Launching...
Released v792
https://XXX.herokuapp.com/ deployed to Heroku
As far as I can see from the build log, the reason it fails is because Xdebug is not installed even though I specified it in composer.json.
How to install Xdebug on Heroku?
Chris
It seems Heroku doesn't support Xdebug. Heroku's documentation provides a list of six extensions :
- Three lists for PHP 5.5 and 5.6:
- Built-in extensions that are automatically enabled
- Built-in extensions can be enabled by
composer.json
- 3rd party extensions that can be enabled by
composer.json
- Three corresponding lists for PHP 7
None of them list Xdebug.