Ошибки обновления PHPUnit, PEAR - PullRequest
9 голосов
/ 21 января 2012

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

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 пакет установлен.

Ответы [ 4 ]

9 голосов
/ 21 января 2012

PEAR 1.9.2 устарел и сломался, и не было никакой надежды на исправление с помощью новой серверной инфраструктуры Pear.

Я понятия не имею, почему дистрибутивы все еще настаивают на том, что только что сломано:)

Install a new pear via go-pear.phar и убедитесь, что у вас есть pear version 1.9.4, а затем заставьте pear игнорировать его старые файлы кэша, используя

sudo pear install --force --alldeps phpunit/phpunit

Избавление отold pear:

sudo apt-get purge php5-pear

Теперь

which pear

должно привести к тому, что команда не будет найдена.Если он все еще там, удалите двоичный файл и связанные с ним классы php в /usr/share/php.

Из истории консоли вы бы сказали, что вы не установили новую грушу с sudo прав, поэтому он попал в / home / или в / usr / local / вместо системного расположения по умолчанию.

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

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

Устранение неполадок в конкретной среде может быть затруднено ... но здесь ...

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

  • sudo apt-get purg php5-pear

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

  • RM / USR / BIN / груша

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

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

  • грушевая помощь

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

  • апгрейд sudo pear PEAR
  • набор настроек sudo pear auto_discover 1
  • установка sudo pear --alldeps pear.phpunit.de/PHPUnit

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

UPDATE

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

  • sudo pear install pear.phpunit.de/PHPUnit_MockObject

Можно подумать, - alldeps будет охватывать это, но ...

ОБНОВЛЕНИЕ 2

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

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

  • sudo apt-get install php-pear

Далее скажите PEAR обновить свой канал.

  • Обновление канала sudo pear pear.php.net

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

  • sudo pear upgrade-all

Наконец, установите PHPUnit, как описано выше ...

  • набор настроек sudo pear auto_discover 1
  • установка sudo pear --alldeps pear.phpunit.de/PHPUnit
1 голос
/ 29 января 2012

Я только что обновил свою систему Ubuntu и получил стабильную версию PEAR 1.9.4. Run

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.

Надеюсь, это поможет, и вы запустите модульные тесты.

1 голос
/ 25 января 2012

Я получил свою работу, выполнив ручную установку .

...