Примечание. Я прочитал все вопросы по этой проблеме.
PEAR установлен и настроен в моей системе (Ubuntu 11.10 + Apache / 2.2.20). Потому как
<?php require_once 'System.php'; var_dump(class_exists('System', false)); ?>
Возврат:
bool(true)
( Руководство PEAR: проверка работы PEAR Шаг 4 )
Когда я пытался использовать phpunit, я получаю эту ошибку.
PHP Warning: require_once(PHP/CodeCoverage/Filter.php): failed to open stream: No such file or directory in /usr/bin/phpunit on line 38 PHP Fatal error: require_once(): Failed opening required 'PHP/CodeCoverage/Filter.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/bin/phpunit on line 38
После этой ошибки я решил установить ее
sudo /usr/bin/pear install phpunit/PHP_CodeCoverage
Но я получаю
phpunit/PHP_CodeCoverage requires PEAR Installer (version >= 1.9.4), installed version is 1.9.2
Я получаю эту ошибку при обновлении PEAR с sudo pear upgrade
PHP Fatal error: Call to undefined method PEAR_Registry::packageinfo() in /usr/share/php/PEAR/Dependency2.php on line 687
Я не уверен, в чем проблема?
ДОПОЛНИТЕЛЬНЫЙ
( command
: result
)
/usr/bin/pear config-get php_dir
: /usr/share/php
Configuration File (php.ini) Path (on phpinfo();)
: /etc/php5/apache2
php -c /etc/php5/apache2/php.ini -r 'echo get_include_path()."\n";'
: .:/usr/share/php
pear upgrade pear
: PHP Fatal error: Call to undefined method PEAR_Registry::packageinfo() in /usr/share/php/PEAR/Dependency2.php on line 687
PEAR Версия: 1.9.2 и пакет php-pear
.
PEAR 1.9.2 устарел и сломался, не надеясь на ремонт с новой инфраструктурой грушевого сервера.
Я не знаю, почему дистрибутивы все еще настаивают на чем-то, что просто сломано 🙂
Install a new pear via go-pear.phar
и убедитесь, что у вас есть pear version 1.9.4
а затем Install a new pear via go-pear.phar
грушу игнорировать старые файлы кеша, используя
sudo pear install --force --alldeps phpunit/phpunit
sudo apt-get purge php5-pear
Теперь
which pear
должен привести к тому, что команда не будет найдена. Если он все еще существует, удалите двоичный и связанные классы php в / usr / share / php.
Из истории вашей консоли я бы сказал, что вы не установили новую грушу с правами sudo
поэтому она приземлилась в / home / или в / usr / local /, а не в исходном местоположении системы.
Это не имеет значения, если вы
Это может быть трудно устранить для конкретной среды … но, здесь идет …
У меня были проблемы, когда я не использовал фактический канал pear.phpunit.de
для установки PHPUnit, особенно при попытке использовать диспетчер пакетов, такой как apt-get или yum. Во-первых, вы должны быть уверены, что ваша установка груши обновлена. Убейте существующую установку из диспетчера пакетов:
Затем убедитесь, что вы удаляете исполняемый двоичный файл, если он все еще существует. Вероятно, это / usr / bin / pear , но вам может потребоваться изменить путь на основе вашей среды:
Затем установите новую грушу, загрузив go-pear.phar и выполнив ее. Убедитесь, что вы установили его с правами sudo (или с правами администратора), чтобы он был установлен в правильном месте :
Затем вы можете проверить, работает ли груша, выполнив следующую команду. Если это так, вы получите список команд:
Наконец, обновите грушу (на всякий случай – вы все равно получили последнюю версию, используя go-pear.phar). После этого убедитесь, что вы используете фактический канал pear.phpunit.de для установки PHPUnit:
Это хорошо сработало для меня … надеюсь, что это поможет.
ОБНОВИТЬ
Чтобы получить все функции PHPUnit, вам, вероятно, также потребуется выполнить следующие действия:
Вы могли бы подумать, что это будет охватывать это, но …
ОБНОВЛЕНИЕ 2
Этот метод не будет работать с текущим Ubuntu 11.10, потому что он устанавливает сломанный установщик груши 1.9.2 …
Вот альтернативный метод, учитывая ваши продолжающиеся проблемы, используя метод установки go-pear.phar …
Затем сообщите PEAR об обновлении собственного канала.
Затем сообщите PEAR, чтобы он обновил себя до самой новой версии.
Наконец, установите PHPUnit как запрещенное выше …
Я получил свою работу, выполнив ручную установку .
Я только что обновил систему Ubuntu, и у меня есть PEAR 1.9.4. Бег
sudo apt-get update sudo apt-get upgrade
чтобы синхронизировать и обновить Ubuntu.
Если вы все еще боретесь с версиями, как указано выше, я предлагаю установить предыдущую версию PHP_CodeCoverage, совместимую с вашим phpunit. Прежде чем я обновил свою систему, у меня был phpunit-3.5.15 (стабильный), PHP_CodeCoverage 1.0.5 (стабильный), установленный с PEAR 1.9.2. Если это ваша версия phpunit
sudo pear install PHP_CodeCoverage-1.0.5
должен установить PHP_CodeCoverage с PEAR 1.9.2.
Надеюсь, что это поможет, и вы получите тесты вашего устройства.