Intereting Posts

Ошибки обновления PHPUnit, PEAR

Примечание. Я прочитал все вопросы по этой проблеме.

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 /, а не в исходном местоположении системы.

Это не имеет значения, если вы

  • Избавьтесь от старой груши
  • Измените свой php.ini include_path на новое место установки груши

Это может быть трудно устранить для конкретной среды … но, здесь идет …

У меня были проблемы, когда я не использовал фактический канал pear.phpunit.de для установки PHPUnit, особенно при попытке использовать диспетчер пакетов, такой как apt-get или yum. Во-первых, вы должны быть уверены, что ваша установка груши обновлена. Убейте существующую установку из диспетчера пакетов:

  • sudo apt-get purge php5-pear

Затем убедитесь, что вы удаляете исполняемый двоичный файл, если он все еще существует. Вероятно, это / usr / bin / pear , но вам может потребоваться изменить путь на основе вашей среды:

  • rm / usr / bin / pear

Затем установите новую грушу, загрузив go-pear.phar и выполнив ее. Убедитесь, что вы установили его с правами sudo (или с правами администратора), чтобы он был установлен в правильном месте :

Затем вы можете проверить, работает ли груша, выполнив следующую команду. Если это так, вы получите список команд:

  • груша помощь

Наконец, обновите грушу (на всякий случай – вы все равно получили последнюю версию, используя go-pear.phar). После этого убедитесь, что вы используете фактический канал pear.phpunit.de для установки PHPUnit:

  • Обновление sudo pear PEAR
  • Конфигурация sudo pear auto_discover 1
  • sudo pear install –alldeps pear.phpunit.de/PHPUnit

Это хорошо сработало для меня … надеюсь, что это поможет.

ОБНОВИТЬ

Чтобы получить все функции PHPUnit, вам, вероятно, также потребуется выполнить следующие действия:

  • sudo pear install pear.phpunit.de/PHPUnit_MockObject

Вы могли бы подумать, что это будет охватывать это, но …

ОБНОВЛЕНИЕ 2

Этот метод не будет работать с текущим Ubuntu 11.10, потому что он устанавливает сломанный установщик груши 1.9.2 …

Вот альтернативный метод, учитывая ваши продолжающиеся проблемы, используя метод установки go-pear.phar …

  • sudo apt-get install php-pear

Затем сообщите PEAR об обновлении собственного канала.

  • sudo pear channel-update pear.php.net

Затем сообщите PEAR, чтобы он обновил себя до самой новой версии.

  • Обновление sudo pear – все

Наконец, установите PHPUnit как запрещенное выше …

  • Конфигурация sudo pear auto_discover 1
  • sudo pear install –alldeps pear.phpunit.de/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.

Надеюсь, что это поможет, и вы получите тесты вашего устройства.