Fatal error: Cannot redeclare email() previously declared in

Fatal error: Cannot redeclare email() previously declared in

我正在创建我的登录页面,当我加载它时,我似乎收到了这个错误消息:

Fatal error: Cannot redeclare email() (previously declared in /home/a4625512/public_html/core/functions/general.php:2) in /home/a4625512/public_html/core/functions/general.php on line 4

我的主机是000WebHost所以不知道是不是跟他们有关系, 我在网上到处搜索它。

general.php代码:

function email($to, $subject, $body) {
    mail($to, $subject, $body, 'From: hello@points4u.com');
} 

登录码:

include 'core/init.php';

if(empty($_POST) === false){
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(empty($username) === true || empty($password) === true){
        $errors[] = 'You need to enter a username and password.';
    }else if(user_exists($username) === false){
        $errors[] = 'We cant find that username. Have you registered?';
    }else if(user_active($username) === false){
        $errors[] = 'You have not activated your account!';
    }else{
        $login = login($username, $password);
        if($login === false){
            $errors[] = 'That username/password is incorrect.';
        }else{
            $_SESSION['user_id'] = $login;
           header('location: index.php');
            exit();
        }
    }
    print_r($errors);
}

所以为了澄清我的评论:

您应该查看的错误的初始部分是:Fatal error: Cannot redeclare email()

此错误告诉您您的函数 email() 之前已在其他地方声明,如果您查看错误的其余部分,它会告诉您应该从哪里开始查找:

/public_html/core/functions/general.php:2

/public_html/core/functions/general.php on line 4

因此您的下一步应该是转到这些文件并找出您之前声明函数名称的原因。

部分解决方案:

email() 函数的名称更改为以前未使用过的名称。即 sendEmail()。这是一个快速修复,但真的应该调查为什么你之前声明了这个函数,以及如果它在做同样的事情,你是否可以使用它来代替。

您可以利用名称空间将电子邮件功能与其他功能区分开来,方法是在文件顶部放置类似 namepace Example; 的内容,尽管仅将此作为一次性解决问题有点费力hacky,我不推荐它。

或者您可以(并且应该)查看您之前声明它的原因,并从那里决定向前的最佳选择。

  • 你能改用那个函数吗?
  • 那个功能没有被使用吗?你能删除它吗?

一堆你真的可以做的事情。总结一下问题是您有两个名称完全相同的函数,因此当您尝试使用它们时 PHP 不知道您要使用哪个函数并返回错误。