2009-10-14 40 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