I wanted to benefit from XDebug clean and comprehensible format during development both while using MAMP on the server and while using PHPUnit from the command line. Many guides may be found around the web but one that explained the existence of two distinct setups I could not find.
Enabling XDebug in MAMP server
I wanted the clear error messages XDebug will send enabled in MAMP and that’s easy once I understood how MAMP works. MAMP will not start
php from a static
php.ini file but will instead use a template to create a
php.ini file any time the server is started.
This means that to have XDebug enabled I need to edit the template MAMP will use to boot its server
php. [caption id=“attachment_495” align=“aligncenter” width=“1024”] Editing php.ini template[/caption] [caption id=“attachment_497” align=“aligncenter” width=“1024”] Original php.ini template file[/caption] After that removing the semi-colon preceding the line
zend_extension... will do the trick [caption id=“attachment_498” align=“aligncenter” width=“1024”] Modified php.ini template file[/caption] and going in the
phpInfo section of MAMP Web Start, after stopping and restarting the server, will show that XDebug is running. [caption id=“attachment_499” align=“aligncenter” width=“1024”] Server version of php with XDebug[/caption]
Can I use coverage now?
When I tried to run
phpunit --colors --coverage-html test/unit/coverage tests/unit/someFileTest.php
after the tests did run I got this error
PHPUnit 3.7.28 by Sebastian Bergmann. The Xdebug extension is not loaded. No code coverage will be generated. ..................... Time: 50 ms, Memory: 2.50Mb
Haven’t I just now enabled XDebug?! Turns out no. Command line version of
php (I’m talking about MAMP built-in
php and not the one that came with the machine, see here) will use another php.ini, a static one, than MAMP server and I did need to enable XDebug in that one too to make it work for PHPUnit too.
Enabling XDebug for CLI version of php too
I’m using version 5.4.19 of
php that came with MAMP and hence will edit the file
to remove the same semi-color I’ve removed before from a line that looks exactly the same as before.
I can use coverage now
Now that the CLI version of
php that came with MAMP uses XDebug too I can run
phpunit --colors --coverage-html test/unit/coverage tests/unit/someFileTest.php && open tests/unit/coverage/index.html
and will get a nice coverage report