2009-10-14 42 views
2

在我的Ubuntu机器上安装PHPUnit之前,我想我已经正确设置了zf.sh。我能够创建一个没有任何问题的新项目。现在,从安装PHPUnit开始,一切工作都不正确。Zend_Tool CLI问题,引发致命错误

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

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提到了关于安装diff补丁的一些内容。

+0

在这[博客中描述的另一种解决方案(http://www.nexik.net/zf-for-total-beginners/apache-zendframework-和-phpunit /) – Andy 2009-12-19 18:46:45

回答

2

我找到了一个暂时的解决办法:

  • 编辑的PHPUnit/Framework.php,近线70:

    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和更高版本)中进行。

+0

很酷,谢谢!更容易理解问题。很好的解释。 – Andrew 2009-10-26 00:26:59

0

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

有关此问题的详细信息,看看这里:Zend_Tool troubles PHPUnit