我收到以下错误:
[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 :(得分:8)
您是否正在使用require_once()将common.php包含在各处?如果您只使用require或include,则会导致此问题。
答案 1 :(得分:4)
您是否使用require
/ include
来引用该文件?包含文件两次时,这是一个常见错误。如果它看到两个声明,即使它们来自相同的文件,PHP也不知道该怎么做。
尝试使用:
include_once('lib/common.php');
答案 2 :(得分:2)
好像你可能不止一次包含了common.php文件。第二次加载会导致错误,因为函数已经加载了。
这是一个奇怪的错误,但一旦找到问题就可能看似合乎逻辑。我建议查看您的包含,或将它们切换为include_once。也许看看在该函数加载之前debug_print_backtrace()输出了什么。
答案 3 :(得分:1)
听起来你已经不止一次地包含了common.php文件。您是否对包含使用include(),require()或require_once()?
答案 4 :(得分:1)
这是前面包含的common.php吗?这可能会导致此错误。
答案 5 :(得分:1)
在PHP中包含代码文件时,应始终使用include_once或require_once。此规则有例外,但如果您不确定,请使用_once版本。唯一可以使用include或require的是当你知道文件将永远不会被包含在同一个程序中时,或者包含的文件不会声明函数(不用if(function_exists()){保护它们{ })。
例如,模板系统是您可能不需要_once版本的极少数用途之一。
答案 6 :(得分:0)
检查递归包含并确保您的块不会多次执行。