Zend_Tool CLI问题,抛出致命错误

时间:2009-10-14 20:20:24

标签: zend-framework phpunit zend-tool

在我的Ubuntu机器上安装PHPUnit之前,我认为我已经正确设置了zf.sh。我能够创建一个没有任何问题的新项目。现在,自从安装PHPUnit以来,一切都运行不正常。

当我尝试创建一个测试项目时,我得到了这个:

Fatal error: Cannot redeclare class PHPUnit_Framework_TestSuite_DataProvider in /usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php on line 64

Call Stack:
0.0011     110200   1. {main}() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:0
0.0011     110320   2. zf_main() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:23
0.0113     685448   3. zf_run() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:36
0.0113     685568   4. Zend_Tool_Framework_Client_Console::main() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:214
0.0114     686044   5. Zend_Tool_Framework_Client_Abstract->dispatch() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Client/Console.php:96
0.0114     686164   6. Zend_Tool_Framework_Client_Abstract->initialize() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Client/Abstract.php:209
0.0152     866128   7. Zend_Tool_Framework_Loader_Abstract->load() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Client/Abstract.php:118
0.4374    2729116   8. include_once('/usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php') /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Loader/Abstract.php:90

我需要做些什么才能让它再次运作?

更新:我想我理解为什么会这样。在PHPUnit 3.4.0中,有一个与Zend Framework 1.9.3同名的类。 Apparently it is a known issue。但是我怎么能解决这个问题所以我可以再次使用Zend_Tool?我可以降级PHPUnit吗?这会解决问题吗?

更新: This tutorial提及有关安装差异补丁的事情。

2 个答案:

答案 0 :(得分:2)

我找到了一个临时解决方法:

  • 在第70行附近编辑PHPUnit / Framework.php:

    require 'PHPUnit/Framework/TestSuite/DataProvider.php';
    
  • 更改为:

    require_once 'PHPUnit/Framework/TestSuite/DataProvider.php';
    

这可能不是长期修复,但它可以解决眼前的症状。


2009-11-20更新:我刚刚看到ZF 1.9分支的提交声称要解决此问题issue。据推测,修复将在下一个版本(1.9.6)和随后的次要版本(1.10.0及更高版本)中进行。

答案 1 :(得分:0)

另一个不需要更改任何第3方代码的解决方案是将PHPUnit文件夹复制到include_path之外的位置,而是创建一个符号链接到新位置。

有关此问题的详细信息,请查看此处:Zend_Tool troubles PHPUnit