在我的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提及有关安装差异补丁的事情。
答案 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