Иногда появляется ошибка PHP - PullRequest
0 голосов
/ 24 октября 2011

У меня есть скрипт, который использует некоторые функции PhpBB для отправки сообщения всем участникам форума.Я сделал страницу php, форму с темой и сообщением и добавил функции phpBB, которые будут делать это.Проблема в том, что ПРОСТО ИНОГДА я получаю эту ошибку:

Fatal error: Cannot redeclare smtpmail() (previously declared in /home/**/domains/**.ca/public_html/zonemembres/includes/functions_messenger.php:896) in /home/**/domains/**.ca/public_html/zonemembres/includes/functions_messenger.php on line 1103

здесь вы можете увидеть код:

 if (!function_exists('send')) {
                        include($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
                    }
                for ($i = 0, $size = sizeof($contact_users); $i < $size; $i++) {

                    $messenger = new messenger(true);

                    // Email headers
                    $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']);
                    $messenger->headers('X-AntiAbuse: User_id - ' . $user->data['user_id']);
                    $messenger->headers('X-AntiAbuse: Username - ' . $user->data['username']);
                    $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip);
                    if (!empty($contact_data['contact_reason'])) {
                        $messenger->template('contact', $contact_users[$i]['user_lang']);
                    } else {
                        $messenger->template('contact_no_reason_custom', $contact_users[$i]['user_lang']);
                    }
                    $messenger->to($contact_users[$i]['user_email'], $contact_users[$i]['username']);
                    //$messenger->to('silvian.iosub@gmail.com', $contact_users[$i]['username']);
                    $messenger->im($contact_users[$i]['user_jabber'], $contact_users[$i]['username']);
                    $messenger->from($contact_data['email']);
                    $messenger->replyto($contact_data['email']);
                    $link = 'http://www.adgmrcq.ca/zonemembres/viewtopic.php?f=' . $config_contact["contact_bot_forum"] . '&t=' . $last_topic_id[0]["topic_id"];
                    $messenger->assign_vars(array(
                        'ADM_USERNAME' => htmlspecialchars_decode($user->data['username']),
                        'ADM_EMAIL' => htmlspecialchars_decode($user->data['user_email']),
                        'SITENAME' => htmlspecialchars_decode($config['sitename']),
                        'USER_IP' => $user->ip,
                        'USERNAME' => $contact_users[$i]['username'],
                        'USER_EMAIL' => htmlspecialchars_decode($contact_data['email']),
                        'DATE' => $date,
                        'REASON' => htmlspecialchars_decode($contact_data['contact_reason']),
                        'SUBJECT' => htmlspecialchars_decode($subject),
                        'MESSAGE' => $message,
                        'LINK' => $link,
                    ));
                    $contact_users[$i]['user_notify_type'] = NOTIFY_EMAIL;
                    $messenger->send($contact_users[$i]['user_notify_type']);
                    $messenger->save_queue();
                    unset($messenger);
                }

Это та часть, которая меня интересует. $messenger переменная объявлена ​​в functions_messenger.php, файле, который, кажется, объявляет функцию дважды.Странно то, что я иногда получаю эту ошибку.Мне не удалось найти правило, как это могло бы появиться.

У кого-нибудь есть идеи?Спасибо !!

1 Ответ

1 голос
/ 24 октября 2011

Перейдите в файл /home//domains/.ca/public_html/zonemembres/includes/functions_messenger.php, найдите функцию smtpmail () и оберните ее в оператор if следующим образом:

if(!function_exists('smtpmail'))
{
    function smtpmail()
    {
        // Function decleration here
    }
}
...