/ Skrypt / PHP kończy się niepowodzeniem przy $ mail = new PHPMailer () bez komunikatu o błędzie - php, email, phpmailer

Skrypt PHP kończy się niepowodzeniem na $ mail = new PHPMailer () bez komunikatu o błędzie - php, email, phpmailer

To prowadzi mnie do ściany!

Próbuję użyć phpmailer do wysyłania wiadomości e-mail. Oto mój kod:

 print "about to do the require!";
require_once("$s[phppath]/phpmailer.php");
print "require has been successful! creating a PHPMailer object!";
$mail = new PHPMailer();
print "yay!";

Jednak program nigdy nie „tak”, umieraw linii 4 ($ mail = new PHPMailer ();). Najbardziej irytujące jest to, że nie wyświetla się żaden komunikat o błędzie, nawet jeśli php działa z display_errors = On. Aby to przetestować, wrzuciłem kilka oczywistych błędów, takich jak pomijanie średników na końcu linii, i od razu otrzymuję komunikat o błędzie.

Co tu się do cholery dzieje?

Edytowane Zmodyfikowałem kod w następujący sposób:

require_once("$s[phppath]/phpmailer.php");
try {
$mail = new PHPMailer(true);
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}

Wciąż nie ma kości.

Odpowiedzi:

1 dla odpowiedzi № 1

Ok, na to pytanie składały się dwie części:

1) Dlaczego nie ma komunikatów o błędach? Czuję się bardzo, bardzo głupio z tego powodu, ponieważ chociaż miałem włączone display_errors, mój własny skrypt faktycznie wyłączał raportowanie błędów. Dziękujemy Pathik Ghandi za wskazanie tej bardzo prostej poprawki. Czasami mogę być wyjątkowy.

2) Dlaczego PHPMailer nie działał? Ponieważ najwyraźniej PHPMailer wymaga teraz DWÓCH plików zamiast jednego: class.phpmailer.php to za mało. Teraz potrzebujesz także PHPMailerAutoload.php. Mam nadzieję, że to pomoże komuś zejść z linii!


0 dla odpowiedzi nr 2

Spróbuj powtórzyć $ s [phppath], aby upewnić się, że podążasz właściwą ścieżką. Ponownie pobierz i ponownie załaduj bibliotekę phpMailer. Spróbuj użyć require zamiast require_once. Spróbuj użyć include zamiast require. Przejdź do pliku phpmailer.php i dodaj echo lub coś, aby upewnić się, że faktycznie potrzebujesz tego pliku.

Być pewnym; Czy używasz jakiegoś frameworka? tj. Wordpress? Jeśli tak, być może trzeba ustawić flagę, aby wyświetlać komunikaty o błędach PHP. WP: zdefiniuj („WP_DEBUG”, prawda);


0 dla odpowiedzi № 3

Spróbuj wywołać funkcję restore_error_handler () powyżej wymaganą.