【问题标题】:PHPUnit Path issuePHPUnit路径问题
【发布时间】:2012-03-11 07:03:28
【问题描述】:

我最近安装了 PHPUnit 3.6.10。

我不明白 php.ini 文件中的 include_path 有什么问题

用到的php.ini文件如下

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini

Apache2 使用的另一个文件是/etc/php5/apache2/php.ini

我已经更改了 cli/php.ini 和 apache2/php.ini 中的包含路径

我在php.ini中写的包含路径是

include_path = ".:/home/username/pear/share/pear:/usr/share/php

以前包含路径是

include_path = .:/usr/share/php:/usr/share/pear

但是PHPUnit的错误表单是这样的

    PHP Warning:  require_once(PHPUnit/Framework.php): failed to open stream: No such file or directory in /home/username/public_html/PHP-Library/APITest.php on line 14
PHP Fatal error:  require_once(): Failed opening required 'PHPUnit/Framework.php' (include_path='.:/home/username/pear/share/pear') in /home/username/public_html/PHP-Library/APITest.php on line 14

这是写在 APITest.php 文件中的

require_once 'PHPUnit/Framework.php';

谁能解释问题是什么? php.ini 还有其他地方需要修改吗?

更新

当我在命令下运行时

$ php -c /path/to/php.ini -r 'echo get_include_path()."\n";'
.:/usr/share/php:/usr/share/pear

更新 2 当我删除 require 并扩展 PHPUnit_Framework_TestCase 时,我收到以下错误 在我发现的 apache2 日志中

[Sun Mar 11 14:54:58 2012] [error] [client 127.0.0.1] PHP Fatal error:  Class 'PHPUnit_Framework_TestCase' not found in /home/username/public_html/phplib/APITest.php on line 15

【问题讨论】:

  • 哦,你想在 Apache 中运行 PHPUnit?你能发布你用来启动测试运行器的代码吗?查看/usr/bin/phpunit 和phpunit.php 以了解标准脚本的作用。
  • 命令行现在可以正常工作了。但是从浏览器运行时出现 http 500 错误。
  • 具体来说,你是如何从浏览器运行它的?

标签: ubuntu phpunit


【解决方案1】:

PHPUnit 3.6 有自己的自动加载器,它负责在不使用require 的情况下使所有类可用。只需在测试中扩展测试用例,无需担心 PHPUnit。

class MyTest extends PHPUnit_Framework_TestCase { ... }

更新

通过浏览器运行测试时,您绕过了设置自动加载器的phpunit 可执行文件。添加

require_once 'PHPUnit/Autoload.php';

到您的 index.php 脚本(或运行测试的任何内容)。

【讨论】:

    【解决方案2】:

    我必须在我的 php.ini 中添加以下内容:/usr/share/php/

    整个字符串在 /etc/php5/apache2/php.ini 中如下所示:

    ".:/usr/bin/php:/var/www/cakephp2/lib/:/var/www/cakephp2/:/usr/bin/phpunit:/usr/bin/pear:/usr/share/php/"
    

    为了弄清楚在哪里链接它我跑了

    locate Autoload.php
    

    从指向我在 /usr/share/php/PHPUnit 安装 PHPUnit 的 shell 中,然后查看它试图包含的内容,我得出结论我需要添加 /usr/share/php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2017-10-02
      相关资源
      最近更新 更多