【问题标题】:Fatal error: Cannot redeclare email() previously declared in致命错误:无法重新声明以前在
【发布时间】:2016-01-20 16:24:51
【问题描述】:

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

致命错误:无法在第 4 行的 /home/a4625512/public_html/core/functions/general.php 中重新声明 email()(之前在 /home/a4625512/public_html/core/functions/general.php:2 中声明)

我的主机是 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);
}

【问题讨论】:

  • 错误信息说明了一切。您不能重新声明...
  • 我不知道如何解决这个问题
  • 有几个解决方案;您可以更改函数的名称,或使用命名空间来停止冲突,或者由于未保留“电子邮件”,因此您应该能够使用它,您可以查找函数 email() 先前声明的位置(提示: core/functions/general.php:2) 并在不使用时将其删除

标签: php html sql declare redeclare


【解决方案1】:

所以要澄清我的评论:

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

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

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

/public_html/core/functions/general.php 第 4 行

因此,您接下来的步骤应该是访问这些文件并找出您之前声明函数名称的原因。

一些解决方案:

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

您可以利用命名空间将电子邮件功能与其他功能区分开来,方法是在文件顶部添加以下内容:namepace Example;,尽管这样做只是为了解决问题有点笨拙,我不会不推荐。

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

  • 您能改用那个函数吗?
  • 没有使用该功能吗?你能把它删掉吗?

你真的可以做很多事情。总结这个问题是你有两个函数名称完全相同,所以当你尝试使用它们时,PHP 不知道你想使用哪个函数并抛出错误。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2010-12-29
    • 2015-08-29
    • 2012-06-18
    • 1970-01-01
    相关资源
    最近更新 更多