How to install an older version of PHPUnit through PEAR? How to install an older version of PHPUnit through PEAR? php php

How to install an older version of PHPUnit through PEAR?


You need to know the exact version number you wish to downgrade to. At the time of writing, the last release you're after is 3.3.17, which can be found out by checking the appropriate PEAR channel.

To downgrade to that particular version execute two commands:

  • pear uninstall phpunit/PHPUnit
  • pear install phpunit/PHPUnit-3.3.17


Note that if you wish to downgrade from a 3.6.x release to 3.5.15 (final stable 3.x release), then you need to uninstall, then reinstall several dependencies manually. Otherwise pear will just force install the latest version of PHPUnit.

Here's how:

(Original instructions from Dusty Reagan's blog: http://dustyreagan.com/downgrade-phpunit-3-6-to-3-5-15/. duplicated to SO in case original link dies for some reason.)

First you need to uninstall PHPUnit 3.6 and all of it’s dependencies.

sudo pear uninstall phpunit/PHPUnitsudo pear uninstall phpunit/DbUnitsudo pear uninstall phpunit/PHP_CodeCoveragesudo pear uninstall phpunit/File_Iteratorsudo pear uninstall phpunit/PHPUnit_MockObjectsudo pear uninstall phpunit/Text_Templatesudo pear uninstall phpunit/PHP_Timersudo pear uninstall phpunit/PHPUnit_Seleniumsudo pear uninstall pear.symfony-project.com/YAML

Next install these specific versions of each dependency, in this order, installing PHPUnit-3.5.15 last.

sudo pear install pear.symfony-project.com/YAML-1.0.2sudo pear install phpunit/PHPUnit_Selenium-1.0.1sudo pear install phpunit/Text_Template-1.0.0sudo pear install phpunit/PHPUnit_MockObject-1.0.3sudo pear install phpunit/PHP_Timer-1.0.0sudo pear install phpunit/File_Iterator-1.2.3sudo pear install phpunit/PHP_CodeCoverage-1.0.2sudo pear install phpunit/DbUnit-1.0.0sudo pear install phpunit/PHPUnit-3.5.15

Note: You may need to add channel for PHP_CodeCoverage, which doesn't seem to be obligatory for PHPUnit 3.6

sudo pear channel-discover components.ez.nosudo pear install channel://components.ez.no/ConsoleTools-1.6


If you get the error Fatal error: Class 'PHP_Token_Stream' not found in /usr/share/pear/PHP/Token/Stream/CachingFactory.php on line 68 you will need to use the following order, so that you get the correct version of PHP_TokenStream:

pear uninstall phpunit/PHPUnitpear uninstall phpunit/DbUnitpear uninstall phpunit/PHP_CodeCoveragepear uninstall phpunit/PHP_TokenStreampear uninstall phpunit/File_Iteratorpear uninstall phpunit/PHP_Timerpear uninstall phpunit/PHPUnit_MockObjectpear uninstall phpunit/Text_Templatepear uninstall phpunit/PHPUnit_Seleniumpear uninstall pear.symfony-project.com/YAMLpear install pear.symfony-project.com/YAML-1.0.2pear install phpunit/PHPUnit_Selenium-1.0.1pear install phpunit/Text_Template-1.0.0pear install phpunit/PHPUnit_MockObject-1.0.3pear install phpunit/PHP_Timer-1.0.0pear install phpunit/File_Iterator-1.2.3pear install phpunit/PHP_TokenStream-1.0.1pear install phpunit/PHP_CodeCoverage-1.0.2pear install phpunit/DbUnit-1.0.0pear install phpunit/PHPUnit-3.5.15