PHPMailer конец скрипта перед заголовком - PullRequest
0 голосов
/ 13 марта 2019

Я сделал очень простой код с формой, а затем получил эту информацию и отправил ее по электронной почте, используя PHPMailer и G-suite. Я запустил этот код на xampp и все в порядке. Это работает. Но когда я перемещаю это на мой хостинг, он не запускается ...

PD: я читал об этой ошибке, и, возможно, речь идет о разрешениях файлов, но я попробовал все ... Установка всех файлов на 755 и, наконец, я попытался установить его на 777 и все еще не работает .. .

Я связался с хостинг-провайдерами и сказал, что они могут помочь мне с этой личной проблемой: /

Это мой php код:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';
require 'phpmailer/src/SMTP.php';

$name="test";
$phone="test";
$email="test";

$mail = new PHPMailer(true);  
try {

$password = 'PASSWD';

$mail->SMTPDebug = 2; 
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; 
$mail->Port = 587;
$mail->SMTPAuth = true; 
$mail->Username = 'email@email.com'; 
$mail->Password = $password;
$mail->SMTPSecure = 'tsl'; 


$mail->setFrom('email@email.com', 'Something');
$mail->addAddress('email@email.com');
$mail->addAddress('email@email.com'); 
$mail->isHTML(true);
$mail->Subject = 'New lead';
$mail->Body = 'Name: '.$name.'<br>Email: '.$email.'<br>Phone: '.$phone;


$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}

Это единственная ошибка, которую я получаю:

[IP-адрес клиента] Конец вывода сценария перед заголовками: send.php

PD:

SMTPSecure изменен на tls

Все еще не работает: (

EDIT
Это ошибки, которые я получаю

117.03.2019 22:04:22 [клиент] AH01215: Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданное использование (T_USE) в строке 3:

17.03.2019 22:04:34 [клиент] AH01215: PHP Предупреждение: использование неопределенной константы \ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 - предполагается, что \ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 '(это приведет к ошибке в будущей версии PHP) в строке 2:

17.03.2019 22:05:14 [клиент] AH01220: время ожидания для вывода из сценария CGI

17.03.2019 22:05:14 [клиент] AH00574: ap_content_length_filter: apr_bucket_read () не удалось

UPDATE

Я обновил php до 7.3.2. PHPMailer на 6.0.7 версии. И единственная другая ошибка, которую я получаю, это ...

Предупреждение PHP: Использование неопределенной константы \ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 - предполагается, что \ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 '(это приведет к ошибке в будущей версии PHP ) в / mnt / web401 / c2 / 79/59742679 / url в строке 2: / home / strato / http / power / rid / 26/79/59742679 / url

ОБНОВЛЕНИЕ 2

  • Php 7.3.2
  • PHPMailer 6.0.7
  • Gsuite
  • Протестировано на XAMPP и фактически работает
  • Хостинг на страте

Фактический код:

ini_set('display_errors', true);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'phpmailer2/src/Exception.php';
require 'phpmailer2/src/PHPMailer.php';
require 'phpmailer2/src/SMTP.php';

$name="test";
$phone="test";
$email="test";

$mail = new PHPMailer(true);  
try {

$password = 'mypassword';

    $mail->SMTPDebug = 3;
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPAuth = true;
    $mail->Username = 'myemail';
    $mail->Password = $password;
    $mail->SMTPSecure = 'tls';
    $mail->setFrom('email', 'fromemail');
    $mail->addAddress('email');
    $mail->addAddress('email');

    $mail->isHTML(true);
    $mail->Subject = 'New lead';
    $mail->Body = 'some text';


    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}

Мои файлы:

enter image description here

(я запускаю send2.php, потому что он использует последнюю версию phpmailer [Эта версия находится в phpmailer2])

Когда я выполняю код, я вижу это на экране:

2019-03-20 13:57:54 Соединение: открытие на smtp.gmail.com:587, тайм-аут = 300, options = array ()

Я захожу на панель хостинга и просто вижу это

20.03.2019 14:55:04 my.website [client 80.38.90.0] AH01215: PHP Предупреждение: использование неопределенной константы \ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 - предполагается, что \ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 '(это приведет к ошибке в будущей версии PHP) в my.route / send2.php в строке 2: my.route / send2.php

20.03.2019 14:55:44 my.website [client 80.38.90.0] AH01220: время ожидания ожидания вывода из CGI-скрипта my.route / send2.php

20.03.2019 14:55:44 my.website [клиент 80.38.90.0] AH00574: ap_content_length_filter: apr_bucket_read () не удалось

Ответы [ 2 ]

0 голосов
/ 18 марта 2019
PHP Parse error: syntax error, unexpected 'use'

Это обычно означает, что вы используете новую версию PHPMailer на очень старой версии PHP. Убедитесь, что вы используете хотя бы PHP 5.5, хотя сейчас вы должны заниматься только новой разработкой для 7.3.

PHP Warning: Use of undefined constant \xe2\x80\x98display_errors\xe2\x80\x99

Это ошибка копирования и вставки - похоже, SO изменил одинарные кавычки, которые я использовал, на фигурные; поменяй их обратно.

0 голосов
/ 18 марта 2019

ap_content_length_filter: apr_bucket_read() failed здесь, по-видимому, является соответствующей ошибкой.

Кажется, что наиболее вероятным виновником здесь является истечение времени ожидания Apache (источник: https://stackoverflow.com/a/38711063/5505001) Вы должны спросить своего веб-хоста, если ониПозволит вам временно изменить время ожидания Apache, чтобы увидеть, действительно ли это проблема.

...