2009-04-28 171 views
0

我收到以下錯誤:什麼可能導致這個PHP錯誤? PHP中的錯誤?

[27-Apr-2009 10:26:06] PHP Fatal error: Cannot redeclare alphanumeric() (previously declared in /home/iddoc/public_html/lib/common.php:6) in /home/iddoc/public_html/lib/common.php on line 8 

聲明本:

/home/iddoc/public_html/lib/common.php:6) in 
/home/iddoc/public_html/lib/common.php on line 8 

這裏是有問題的線路:

function alphanumeric($str) { 
    return strtolower(preg_replace("/[^A-Za-z0-9]/",'',$str)); 
} 

此前這些線路有的只是評論。該文件或其他任何地方沒有其他聲明。

奇怪,不是嗎?

+0

你在哪裏輸入這個功能?你是否多次導入它? – Welbog 2009-04-28 14:29:03

回答

8

你是否在使用require_once()來包含common.php?如果您只使用require或include,那會導致此問題。

4

你使用require/include來引用文件嗎?這是包含文件兩次時的常見錯誤。如果PHP看到兩個聲明,即使它們來自同一個文件,也不知道該怎麼辦。

嘗試使用這樣的:

include_once('lib/common.php'); 
0

檢查遞歸包括,確保你的程序將不執行幾次。

1

聽起來像你有不止一次包含common.php文件。你是否使用include(),require()或require_once()作爲你的包含?

2

看起來好像你可能不止一次地包含了common.php文件。第二次加載會導致類似的錯誤,因爲函數已經加載。

這是一個奇怪的錯誤,但一旦找出問題可能似乎是合乎邏輯的。我會建議看看你的包含,或將它們切換到include_once。也許在函數加載之前看看debug_print_backtrace()輸出的內容。

1

這是common.php早期包含的嗎?這可能會導致此錯誤。

1

將代碼文件包含在PHP中時,應始終使用include_once或require_once。這條規則有例外,但如果您不確定,請使用_once版本。只有當你知道文件永遠不會被再次包含在同一個程序中時,或者被包含的文件不會聲明函數(沒有使用if(function_exists()){ }塊)。

作爲一個例子,模板系統是您可能不需要_once版本的極少數應用之一。