Установка PEAR + PHPUnit (Windows)

А вы думаете, что это легко? Я тоже так поначалу думал: скачал PHP 5.3 в виде инсталлера, в опциях установки отметил пункт «Установить PEAR». После установки PHP в его папке создаются два файла: go-pear.phar и go-pear.bat. Если попытаться сразу же запустить go-pear.bat, то появится ошибка о том, что файл go-pear.phar не найден (ну почему уже проблемы начинаются с самого начала?). Для того, чтобы файл был найден, необходимо подредактировать содержимое go-pear.bat, указав прямой путь до искомого файла:

%PHP_BIN% -d output_buffering=0 \path\to\PEAR\go-pear.phar

Далее можно приступать непосредственно к установки. Запускаем go-pear.bat, видим следующее:

Are you installing a system-wide PEAR or a local copy?
(system|local) [system] :

Выбираем system, далее нам предлагают либо установить элементы PEAR в указанные директории, либо указать их руками. Лучше, конечно, второй вариант:

1. Installation base ($prefix) : C:\php\PEAR
2. Temporary directory for processing : C:\php\PEAR\tmp
3. Temporary directory for downloads : C:\php\PEAR\tmp
4. Binaries directory : C:\php\PEAR
5. PHP code directory ($php_dir) : C:\php\PEAR
6. Documentation directory : C:\php\PEAR\docs
7. Data directory : C:\php\PEAR\data
8. User-modifiable configuration files directory : C:\php\PEAR\cfg
9. Public Web Files directory : C:\php\PEAR\www
10. Tests directory : C:\php\PEAR\tests
11. Name of configuration file : C:\php\PEAR\pear.ini
12. Path to CLI php.exe : C:\php\php.exe

1-12, 'all' or Enter to continue:

Однако установщик наотрез отказался видеть php.exe:

**ERROR**: not a folder, or no php.exe found in this folder.

Как я не шаманил, но научить видеть php.exe у меня не получилось. Пришлось скачивать архив с файлами PEAR. Ок, скачал, распаковал. Следовал вот этой неплохой инструкции по реанимации PEAR, если по какой-то причине установщик не работает. Пробуем получить информацию о PEAR:

pear version

Получаем:

fakeprompt PHP_PEAR_INSTALL_DIR is not set correctly.
Please fix it using your environment variable or modify

Препарирую pear.ini, комментируя часть строчек с путями к директориям, а часть снова подправляя. Добиваюсь того, что ошибка пропадает (однако остается косяк с определением версии PEAR):

PEAR Version: @pear_version@
PHP Version: 5.3.13
Zend Engine Version: 2.3.0
Running on: Windows NT 6.1 build 7601 (Windows 7 Enterprise Edition Service Pack 1) i586

Пробую установить PHPUnit, для этого командую:

pear update-channels
pear upgrade-all
pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony-project.com
pear install phpunit/PHPUnit

Получаю:

No releases available for package "pear.phpunit.de/PHPUnit"
install failed

Ну что на сей раз не так-то? Поиск по сети дал следующую подсказку:

pear clear-cache
pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony-project.com
pear install --alldeps phpunit/PHPUnit

После чего PHPUnit наконец-то установился:

phpunit/PHP_CodeCoverage can optionally use PHP extension "xdebug" (version >;= 2.0.5)
phpunit/PHPUnit_MockObject can optionally use PHP extension "soap"
phpunit/PHP_Invoker requires PHP extension "pcntl"
downloading PHPUnit-3.6.11.tgz ...
Starting to download PHPUnit-3.6.11.tgz (119,171 bytes)
.........................done: 119,171 bytes
downloading File_Iterator-1.3.1.tgz ...
Starting to download File_Iterator-1.3.1.tgz (5,157 bytes)
...done: 5,157 bytes
downloading Text_Template-1.1.1.tgz ...
Starting to download Text_Template-1.1.1.tgz (3,622 bytes)
...done: 3,622 bytes
downloading PHP_CodeCoverage-1.1.2.tgz ...
Starting to download PHP_CodeCoverage-1.1.2.tgz (132,552 bytes)
...done: 132,552 bytes
downloading PHP_Timer-1.0.2.tgz ...
Starting to download PHP_Timer-1.0.2.tgz (3,686 bytes)
...done: 3,686 bytes
downloading PHPUnit_MockObject-1.1.1.tgz ...
Starting to download PHPUnit_MockObject-1.1.1.tgz (19,897 bytes)
...done: 19,897 bytes
downloading YAML-1.0.6.tgz ...
Starting to download YAML-1.0.6.tgz (10,010 bytes)
...done: 10,010 bytes
downloading PHP_TokenStream-1.1.3.tgz ...
Starting to download PHP_TokenStream-1.1.3.tgz (9,860 bytes)
...done: 9,860 bytes
install ok: channel://pear.phpunit.de/File_Iterator-1.3.1
install ok: channel://pear.phpunit.de/Text_Template-1.1.1
install ok: channel://pear.phpunit.de/PHP_Timer-1.0.2
install ok: channel://pear.symfony-project.com/YAML-1.0.6
install ok: channel://pear.phpunit.de/PHP_TokenStream-1.1.3
install ok: channel://pear.phpunit.de/PHP_CodeCoverage-1.1.2
install ok: channel://pear.phpunit.de/PHPUnit_MockObject-1.1.1
install ok: channel://pear.phpunit.de/PHPUnit-3.6.11

Проверяем:

phpunit --version

Получаем:

PHPUnit 3.6.11 by Sebastian Bergmann.