PHPUnit,PEAR升级错误

时间:2012-01-21 01:29:17

标签: php ubuntu phpunit pear

注意:我已阅读有关此问题的所有问题

在我的系统上安装并配置了PEAR(Ubuntu 11.10 + Apache / 2.2.20)。因为

<?php
require_once 'System.php';
var_dump(class_exists('System', false));
?> 

返回:

bool(true)

PEAR Manual : Checking if PEAR works Step 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

使用sudo pear upgrade

升级PEAR时出现此错误
PHP Fatal error:  Call to undefined method PEAR_Registry::packageinfo() in /usr/share/php/PEAR/Dependency2.php on line 687

我不确定是什么问题?

其他

commandresult

/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 pearPHP 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 个答案:

答案 0 :(得分:9)

PEAR 1.9.2已经过时,无法通过更新的梨形服务器基础设施进行维修。

我不知道为什么发行版仍然坚持刚刚破坏的东西:)

Install a new pear via go-pear.phar并确保您拥有pear version 1.9.4,然后强制梨使用

忽略旧的缓存文件
sudo pear install --force --alldeps phpunit/phpunit

摆脱旧梨:

sudo apt-get purge php5-pear

现在

which pear

应导致找不到命令。如果它仍然存在删除/ usr / share / php中的二进制文件和相关的php类。

从您的控制台历史记录中我会说您没有安装具有 sudo 权限的新梨,因此它位于/ home /或/ usr / local /而不是默认系统位置。

只要你

就没关系
  • 摆脱旧梨
  • 将php.ini include_path更改为新的pear安装位置

答案 1 :(得分:3)

对特定环境进行故障排除可能很困难......但是,这里有......

在尝试使用像apt-get或yum这样的包管理器时,我没有使用实际的pear.phpunit.de频道来安装PHPUnit,尤其是。首先,您需要确保您的梨装置是最新的。从包管理器中删除现有安装:

  • sudo apt-get purge php5-pear

然后确保删除可执行二进制文件(如果它仍然存在)。这可能是 / usr / bin / pear ,但您可能需要根据您的环境修改路径:

  • rm / usr / bin / pear

接下来通过下载go-pear.phar并执行它来安装新梨。 确保使用sudo权限(或以root身份)安装它,以便将其安装在正确的位置

然后,您可以通过执行下一个命令来验证pear的工作原理。如果是这样,您将获得一个命令列表:

  • pear help

最后,升级梨(以防万一 - 你毕竟使用go-pear.phar获得最新版本)。在此之后,确保使用实际的pear.phpunit.de通道来安装PHPUnit:

  • sudo梨升级梨
  • sudo pear config-set auto_discover 1
  • sudo pear install --alldeps pear.phpunit.de/PHPUnit

这对我来说效果很好......希望它有所帮助。

<强>更新

要获得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 channel-update pear.php.net

然后,告诉PEAR将自己升级到最新版本。

  • sudo pear upgrade-all

最后,安装上面禁止的PHPUnit ......

  • sudo pear config-set auto_discover 1
  • sudo pear install --alldeps pear.phpunit.de/PHPUnit

答案 2 :(得分:1)

我通过做manual installation让我的工作。

答案 3 :(得分:1)

我刚刚升级了我的Ubuntu系统,我的PEAR 1.9.4稳定了。运行

sudo apt-get update
sudo apt-get upgrade

让您的Ubuntu同步并保持最新状态。

如果您仍在努力使用上述版本,我的建议是安装与您的phpunit兼容的PHP_CodeCoverage的早期版本。在我升级系统之前,我使用PEAR 1.9.2安装了phpunit-3.5.15(稳定版),PHP_CodeCoverage 1.0.5(稳定版)。如果这是你的phpunit版本

sudo pear install PHP_CodeCoverage-1.0.5

应该使用PEAR 1.9.2安装PHP_CodeCoverage。

我希望这会有所帮助,让你的单元测试运行。