2013-07-11 73 views
2

在我的PHP應用程序中,我有幾個調用require_once。在我的開發PC上,這工作正常,不會嘗試多次包含相同的文件。然而,當我把它搬到了我的生產服務器,我得到一個錯誤PHP - require_once似乎多次包含文件並導致錯誤

不能重新聲明MyClass類

通過我發現,這種情況只是require_once通話結束後,代碼搜索後,所以它一定是造成它的原因。

我已經搜遍了整個項目,這個類絕對只在一個文件中聲明過,而且它只能通過require_once包含。是否有一些奇怪的PHP配置會使require_once在生產服務器上表現不同?

感謝

+1

'require_once'將檢查*文件*是否已包含,而不是*類*是否已被定義。 – AlexP

+1

是的,也許你已經在兩個不同的文件中定義了相同的類 – steven

+0

我絕對沒有這樣做 - 我檢查了整個項目 - 這個類只在一個文件中定義。 – user1578653

回答

0

把下面爲您包含類文件的頂部:

if(class_exists("<yourclassname>")) 
{ 
throw new Exception("Class already defined"); 
} 

現在,您將收到一條明確的錯誤消息,其中類重新調用。

0

OK,這個討厭的問題可以通過兩個東西的我知道一個原因造成的:

符號鏈接;如果從OS X(也可能是Windows)文件和指向文件

的符號鏈接加載,則文件名不區分大小寫; PHP require_once不是

這讓我困惑了幾個小時今天。我通常在Linux上工作,但是我被迫到了一個Mac上,這成爲一個問題。

相關問題