致命错误:调用未定义的函数file_iterator_autoload()

时间:2013-01-15 14:59:50

标签: php symfony phpunit

我们正在开发一个Symfony2项目,我们在其上编写了几个PHPUnit测试。

在其中一些(涉及大型memmory ammounts的那些)上,我们收到一条错误消息:

  

有1次失败:

     

1)GapCoach \ Bundle \ Tests \ Controller \ ClientControllerTest :: testDesaClient

     

致命错误:在第379行的/usr/share/php/PHPUnit/Util/GlobalState.php中调用未定义的函数file_iterator_autoload()

我安装了最后一个PHPUnit版本,file_iterator_autoload函数确实存在且可以访问。

我们如何解决这个错误?

2 个答案:

答案 0 :(得分:3)

如果您使用的机器由于某种原因无法立即升级到PHP 5.3.3或更高版本(PHPUnit 3.7 requires),那么您可以通过降级软件包来修复此错误。

pear list -a应该产生类似的内容:

Installed packages, channel pear.phpunit.de:
============================================
Package            Version State
File_Iterator      1.3.3   stable
PHPUnit            3.6.12  stable
PHPUnit_MockObject 1.1.1   stable
PHP_CodeCoverage   1.1.4   stable
PHP_Timer          1.0.4   stable
PHP_TokenStream    1.1.4   stable
Text_Template      1.1.2   stable

您需要1.3.2版本的File_Iterator,1.1.1版本的Text_Template和1.0.3版本的PHP_Timer。

所以卸载旧的:

pear uninstall phpunit/PHPUnit
pear uninstall phpunit/PHPUnit_MockObject
pear uninstall phpunit/PHP_CodeCoverage
pear uninstall phpunit/File_Iterator
pear uninstall phpunit/PHP_Timer
pear uninstall phpunit/PHP_TokenStream
pear uninstall phpunit/Text_Template

您应该能够验证您没有安装phpunit软件包:

pear list -a
Installed packages, channel pear.phpunit.de:
============================================
(no packages installed)

现在首先显式安装这些依赖版本:

pear install phpunit/File_Iterator-1.3.2
pear install phpunit/PHP_Timer-1.0.3
pear install phpunit/Text_Template-1.1.1

然后PHPUnit:

pear install --alldeps phpunit/PHPUnit

pear list -a
Installed packages, channel pear.phpunit.de:
============================================
Package            Version State
File_Iterator      1.3.2   stable
PHPUnit            3.6.12  stable
PHPUnit_MockObject 1.1.1   stable
PHP_CodeCoverage   1.1.4   stable
PHP_Invoker        1.1.2   stable
PHP_Timer          1.0.3   stable
PHP_TokenStream    1.1.4   stable
Text_Template      1.1.1   stable

所有人现在都应该工作:)

答案 1 :(得分:2)

解决方案只是将PHPUnit升级到版本 3.7.13