2

我在本地机器上以 root 身份使用 ubuntu 11.10,我已经安装了 xampp 1.7.7,并且我是 ubuntu 的新手,同时遵循 sitepoint 上的教程(http://www.sitepoint.com/getting- started-with-pear/) 关于如何安装 pear 以使用 PhpUnit,当时我没有注意到,但似乎我在 CL 中安装或使用了现有的 php 版本 5.3.6 来做到这一点,pear 安装也是建立在这个版本,在安装xampp的同时,我现在有两个版本的php,xampp的5.3.8和5.3.6,无论如何,我想做的是使用现有的xampp php版本并在其上构建pear,使所有我通过 xampp.so 我的工作是:

  1. 如何卸载php V5.3.6 及其pear 安装?
  2. 如何将 CL 与 php 版本链接。xampp 的?
  3. 如何在 php 版本上构建下一个 pear 安装。xampp 的?
  4. 我想要我所有的网络开发人员。通过xampp工作,我还需要卸载什么,以避免这种混乱吗?4.

我在 attampet 中执行了以下操作来解决问题:

  1. 我在 bash 中写了这个:

    gedit ~/.bashrc

  2. 我将其添加到 ~/.bashrc 文件的末尾以尝试更改环境路径:

    导出路径=/opt/lampp/bin:$PATH 导出路径=/opt/lampp/lib/php:$PATH 导出路径=/opt/lampp/lib/php/PHPUnit/pearcmd.php:$PATH

  3. 我使用'php -v'和'pear list'检查了php和pear版本,我得到了一个输出:

    PHP 5.3.8 (cli)(构建时间:2011 年 9 月 19 日 13:29:27) 版权所有 (c) 1997-2011 The PHP Group Zend Engine v2.3.0,版权所有 (c) 1998-2011 Zend Technologies

和梨:

Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.9   stable
Console_Getopt   1.3.1   stable
PEAR             1.9.4   stable
PHPUnit          1.3.2   stable
Structures_Graph 1.0.4   stable
XML_Util         1.2.1   stable
  1. 当我运行时:'phpunit MessageTest.php':我明白了

    PHP 警告:require_once(PHP/CodeCoverage/Filter.php):无法打开流:第 38 行的 /usr/bin/phpunit 中没有此类文件或目录

    警告:require_once(PHP/CodeCoverage/Filter.php):无法打开流:第 38 行的 /usr/bin/phpunit 中没有这样的文件或目录 PHP 致命错误:require_once():无法打开所需的 'PHP/CodeCoverage/Filter .php' (include_path='.:/php/includes:/opt/lampp/lib/php:/opt/lampp/bin:/opt/lampp/lib/php/PEAR') 在 /usr/bin/phpunit 上第 38 行

5.我运行了其他问题中报告的以下命令作为该错误的解决方案:

sudo apt-get remove phpunit
sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover components.ez.no
sudo pear update-channels
sudo pear upgrade-all
sudo pear install --alldeps phpunit/PHPUnit
sudo apt-get install phpunit

并将 php.ini 的包含路径更新为:

include_path = ".:/php/includes:/opt/lampp/lib/php:/opt/lampp/bin:/opt/lampp/lib/php/PEAR"

php 文件 MessageTest.php:

<?php
  require 'PHPUnit/Autoload.php';
  $path = '/opt/lampp/lib/php/PEAR';
  set_include_path(get_include_path() . PATH_SEPARATOR . $path);

  require_once 'PHPUnit/Framework/TestCase.php';
  require_once 'Message/Controller/MessageController.php';

  class MessageTest extends PHPUnit_Framework_TestCase{
    private $message;
    public function setUp() {
      $this->message = new MessageController();
    }
    public function tearDown() {
    } 
    public function testRepeat(){
      $yell = "Hello, Any One Out There?";  
      $this->message->repeat($yell); //sending a request
      $returnedMessage = $this->message->repeat($yell);//get a response
      $this->assertEquals($returnedMessage, $yell);
    }  
  }
?>

我正在尝试测试的 MessageController.php 中的 MessageController 类

<?php

  class MessageController { 
    public function actionHelloWorld() {
      echo 'helloWorld';  
    }
    public function repeat($inputString){
      return $inputString;
    }
  }
  $msg = new MessageController;
?>

我没有使用任何 PHP 框架,我只是让文件和类听起来就是这样。

我仍然得到同样的错误:

PHP Warning:  require_once(PHP/CodeCoverage/Filter.php): failed to open stream: No such file or directory in /usr/bin/phpunit on line

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='.:/php/includes:/opt/lampp/lib/php:/opt/lampp/bin:/opt/lampp/lib/php/PEAR') in /usr/bin/phpunit on line 38

当然,我在这里要求越来越高,我浪费了很多时间并且对此感到非常沮丧,希望你们不要厌倦阅读我的问题,感谢您的帮助

提前致谢, Mohamad elbialy

4

1 回答 1

7

最后,我得到了关于如何将 xampp 的 php 和 pear 链接到 CL(ubuntu 的 bash shell)的问题的答案,在终端窗口中键入以下内容:

gedit ~/.bashrc

文件打开,您将以下内容添加到文件末尾:

export PATH=/opt/lampp/bin:$PATH

并确保在终端中键入以下内容:

echo $PATH

您将在回显路径中看到“/opt/lampp/bin”以及默认添加的其他路径,这是在搜索论坛、其他 stackoverflow 和超级用户问题 2-3 天后对我有用的唯一方法

要检查 CL 是否处理 xampp 的 php 和 pear 版本,请键入以下内容:

  1. php -v显示php的版本
  2. pear list显示 pear 的版本以及 pear 依赖包

现在,我一直在这样做以使 PHPunit 在 CL 中工作 5 天,想象一下这种挫败感,作为 Ubuntu 的新手,我做了很多 sudo 而不是 sudo 命令,这对我来说错过了整个事情,所以我决定重新安装 ubuntu(删除我安装的所有 pear、php 和 phpunit 包,但无法跟踪他们的路径)所以从新的 ubuntu 11.10 和 xampp 1.7.7 开始,我做了以下操作来使 phpunit 工作:

  1. 我用 cL 为 xampp 的 php 和 pear 创建了链接(我在上面写了),在 CL 中键入以下步骤:
  2. sudo /opt/lampp/bin/pear uninstall phpunit(xampp 是 1.2.something,我想安装 3.6.10)
  3. sudo /opt/lampp/bin/pear list(PHPunit 不存在,这是一个检查),按照 PHPunit 手册1中的建议执行以下步骤
  4. sudo /opt/lampp/bin/pear config-set auto_discover 1(打开下载通道什么的)
  5. sudo /opt/lampp/bin/pear install pear.phpunit.de/PHPUnit(这会安装版本 3.6.10),现在输入 CL:( sudo /opt/lampp/bin/phpunit --version这显示了 3.6.10 的版本,是的,你已经成功了)

我使用/opt/lampp/bin/phpunit,让您看到快速结果,不,您不需要在工作路径中包含任何内容,您已经完成了,您需要关闭该终端并打开一个新终端并仅输入, phpunit --version, 你会得到同样的结果,它就在那里,它都是你的

笔记:

  1. 我使用'/opt/lampp/bin/something 然后是命令',通过xampp的php和pear强制我的安装,这不是必需的(因为你设置了环境路径),但这就是你做事时的方式花费超过 5 天的搜索时间。
  2. 我尝试使用 xampp 的 phpunit 1.2.something,但它似乎不适用于命令行,我不知道为什么而且我不想这样做,所以如果这种情况发生在你身上并且你想要 ver.1.2.something,找到所有版本,使用此链接(http://pear.phpunit.de/)中的说明并执行相同的步骤来安装它,我没有尝试该链接中的方法,如果您遇到困难,您可以评论此答案,
于 2012-04-08T02:10:40.437 回答