【问题标题】:fatal error 'File/Iterator/Autoload.php' not found when running phpunit运行 phpunit 时找不到致命错误“File/Iterator/Autoload.php”
【发布时间】:2012-01-31 19:21:22
【问题描述】:

当我尝试在 phpunit 中运行 testclass 时出现此错误。

C:\xampp\htdocs\unittest>phpunit UnitTest usertest.php
PHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45
PHP Stack trace:
PHP   1. {main}() C:\xampp\php\phpunit:0
PHP   2. require() C:\xampp\php\phpunit:41

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45

Call Stack:
    0.0004     325352   1. {main}() C:\xampp\php\phpunit:0
    0.0026     366520   2. require('C:\xampp\php\pear\PHPUnit\Autoload.php')xampp\php\phpunit:41

PHP Fatal error:  require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45
PHP Stack trace:
PHP   1. {main}() C:\xampp\php\phpunit:0'

谁能解决这个问题??

注意:我使用的是 Windows 7。

谢谢,

【问题讨论】:

  • (note) 据我所知,这不是重复的,因为它是安装问题,可能是 SF 迁移,但这是一个真正的问题 :)
  • 也遇到了类似的错误。如果您使用作曲家,可以简单地解决这个问题,请确保您拥有最新的稳定版本的 PHPUnit,例如5.5,一切都会工作。

标签: php unit-testing phpunit


【解决方案1】:

发生这种情况的一个可能原因是您的 php include_path 设置不正确。请确保您有合适的 PEAR 路径可用。对于我的 WAMP 安装,它将是:

include_path=".;C:\wamp\bin\php\php5.3.8\PEAR\PEAR"

但是,它很可能在您的系统上有所不同。

附带说明,您需要更新 apache php.ini 以及位于 PHP 安装文件夹中的 php.ini。 CLI 默认 php.ini,Web 请求(以及您可能使用 PEAR 包的其他软件)将使用 apache php.ini。

希望这会有所帮助。

【讨论】:

  • 这正是我想要的,虽然直到我RTFM 才意识到这一点。作为旁注,; 用于 windows,: 用于 osx/unix 作为 dir 分隔符。
  • 也为我工作。在 Ubuntu 中,我的路径是“.:/usr/share/pear”,以防它对某人有所帮助。
  • “我也是”(对不起),在我的情况下,这是由于通过 Mac 端口升级 PHP,它安装了新的 php.ini 配置,但没有复制到 go-pear生成的包含路径。
【解决方案2】:

您的 phpunit 安装已损坏。最简单的解决方法是

pear install --force --alldeps phpunit/phpunit

看看有没有效果。

您将需要最新的 pear 版本1.9.4。如果您没有该版本,请使用go-pear.phar 安装它。如果您从 xammp 运行某些东西,请不要尝试修复他们提供的 pear 安装。通常重新安装会容易得多。

如果您愿意,也可以尝试安装缺少的软件包:

pear install phpunit/File_Iterator

(如果 pear 告诉您它已经安装,请添加 --force

【讨论】:

    【解决方案3】:

    检查 pear 配置帮助我快速找到了这个:

    bash-3.2# pear config-show | grep php_dir
    PEAR directory                 php_dir          /usr/local/pear/share/pear
    
    bash-3.2# vi /etc/php.ini
    include_path = ".:/php/includes:/usr/local/pear/share/pear"
    

    【讨论】:

    • 这个方法对我有用。在 Ubuntu 12.04 中,首先找到 php_dir,即“/usr/share/php”,然后使用“locate php.ini”找到它的正确位置。我的情况是“/etc/php5/cli/php.ini”,然后添加/修改include_path =“.:/usr/share/php”
    【解决方案4】:

    经过2天的帖子阅读,我终于用指南解决了:

    通过保留/损坏的 Phpunit LINK 安装来清洁电脑

    并使用本指南重新安装LINK

    【讨论】:

      【解决方案5】:

      对我来说,修复很简单(Ubuntu 12.04)。首先,我进行了搜索以确保该文件存在以及它的位置:

      locate Autoload.php
      

      应该返回类似这样的结果:

      /usr/share/php/File/Iterator/Autoload.php
      /usr/share/php/PHP/CodeCoverage/Autoload.php
      /usr/share/php/PHP/Depend/Autoload.php
      /usr/share/php/PHP/Invoker/Autoload.php
      /usr/share/php/PHP/Timer/Autoload.php
      /usr/share/php/PHP/Token/Stream/Autoload.php
      /usr/share/php/PHPCPD/Autoload.php
      /usr/share/php/PHPUnit/Autoload.php
      /usr/share/php/PHPUnit/Framework/MockObject/Autoload.php
      /usr/share/php/PHP_CodeBrowser/Autoload.php
      /usr/share/php/Text/Template/Autoload.php
      

      然后我检查了我的include_path,它在/etc/php5/apache2/php.ini中设置正确,但在/etc/php5/cli/php.ini(命令行界面)中仍然被注释掉。

      取消注释这一行对我有用:

      include_path = ".:/usr/share/php:/usr/include/php5"
      

      我知道很基本,但设置新机器时总是小事;-)

      【讨论】:

        【解决方案6】:

        我在这本书上读过的所有好东西。 首先检查 Autoload.php 的位置。 使用:

        $ find . -name 'Autoload.php' -type f
        

        我假设您的文件位于:

        /usr/local/pear/share/pear
        


        我安装了 Apple OSX 10.8.4 MAMP 和 MAMP-PRO,还安装了其他几个 PHP。
        对于最后一个,我做了以下事情: 首先检查目录下是否有php.ini/private/etc
        如果没有,请执行:

        $ sudo cp /private/etc/php.ini.default /private/etc/php.ini
        

        在“php.ini”文件的底部添加以下行:

        ; *** Added by <your-name> ****
        include_path=".:/usr/local/pear/share/pear"
        ; *** Ended addition ****
        

        完成。

        【讨论】:

          【解决方案7】:

          我在使用内置服务器配置的 OSX 10.6 上使用 PhP 5.3 时遇到了同样的问题。

          我注意到当 PHPUnit 成功安装到 /usr/lib/php 时,Autoload.php 正在尝试(第 45 行)从其当前目录(/usr/lib/php/PHPUnit)加载文件迭代器,而不是Pear 将其安装到 (/usr/lib/php/File) 的目录。这可能是 Pear 安装程序中的错误吗?

          一个简单的 ln -s /usr/lib/php/File /usr/lib/php/PHPUnit/File 解决了这个问题。

          【讨论】:

          • 这是一个杂牌。真正的原因是 php.ini 中的 include_path 配置错误。这只是掩盖了真正的问题,如果情况稍有变化,很容易再次崩溃。
          • @Tim,感谢您的解释,我首先有这个问题,几乎尝试更改“require_once”路径。后来通过修改php.ini来弄清楚。
          【解决方案8】:

          我正在使用 Ubuntu 14.04,我通过 Ubuntu 软件中心安装了 phpunit,但没有成功。

          最后我删除了它并按照here的说明进行操作

          wget https://phar.phpunit.de/phpunit.phar  
          chmod +x phpunit.phar  
          sudo mv phpunit.phar /usr/local/bin/phpunit
          

          【讨论】:

            【解决方案9】:

            此外,使用开放服务器捆绑包时,您会注意到它报告的 include_path 太短。

            要在 Windows 7 上解决此问题,您可以这样做

            cd c:\Windows
            mklink php.ini c:\OpenServer\userdata\temp\config\php.ini
            

            【讨论】:

              【解决方案10】:

              我在 windows 7 和 xampp(php 5.6.11) 上遇到了同样的问题,我尝试了所有重新安装 pear 和 phpunit,但没有成功。当我检查 C:\xammp\php\pear 目录的权限时,它是只读的,在我更改权限后它开始工作。

              【讨论】:

                【解决方案11】:

                查看错误:

                 (include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php
                

                Xampp 正在尝试在 include_path .;C:\php\pear 中找到该文件,但梨的路径是 .;C:\xampp\php\pear

                为梨设置正确的路径,它会起作用。我刚刚成功了。

                【讨论】:

                  猜你喜欢
                  • 2022-01-02
                  • 2013-09-27
                  • 2013-01-04
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-08-18
                  • 1970-01-01
                  相关资源
                  最近更新 更多