it-swarm.com.de

PHPMailer ohne Composer installieren

Bitte verzeihen Sie meine Unwissenheit. Ich versuche PHPMailer 6.0.1 unter PHP 5.6 unter Linux zu installieren. Meine PHP Installation ist remote und ich verwalte alle meine Websites 'PHP über FTP (normalerweise lade ich Pakete als .zips in Win 10 herunter, entpacke sie und führe das Ergebnis per FTP aus Webspace).

Von den verschiedenen Möglichkeiten, PHPMailer zu installieren, wird Composer bevorzugt, aber hier komme ich nicht weiter. Keine der Composer-Anweisungen scheint für diese Arbeitsweise angemessen zu sein - der Installer möchte, dass ich die Befehlszeile auswählen PHP die Sie verwenden möchten ", aber ich habe nicht PHP lokal .... __ ärgerlich sehe ich die installierte composer.json-Datei von PHPMailer, die darauf wartet, verwendet zu werden. Aber kein PHPMailerAutoload.php (wird dies von Composer erstellt?)

Also versuche ich eine manuelle Installation von PHPMailer. Ich lade die entpackten Verzeichnisse herunter, entpacke sie und lade sie per FTP in meinen Webspace im Ordner PHPMailer hoch. Ich füge dann an der Spitze meines PHP Codes und außerhalb von Funktionen Folgendes ein:

require_once 'PHPMailer/src/PHPMailer.php';
require_once 'PHPMailer/src/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

Mit den Anweisungen 'use' bekomme ich einen Syntaxfehler unerwartete 'use' (T_USE) … Ohne sie komme ich so weit, zu versuchen zu instanziieren: $ Mail = new PHPMailer; Dies schlägt jedoch fehl, wenn eine 'Klasse' PHPMailer 'nicht gefunden wird

Was mache ich bitte falsch und wie kann ich es besser machen?

4
decomplexity

Dies ist nicht spezifisch für PHPMailer - es sind nur die Dinge, mit denen Sie sich für eines der unzähligen Pakete PHP befassen müssen, die Namespaces verwenden. Die PHP -Dokumente zur Verwendung von use sind hier .

Die kurze Version lautet: Sie müssen die Anweisungen namespace und use vor allen anderen Skripten verwenden. Wenn Sie also einfach die Reihenfolge Ihrer Befehle umkehren, sollte dies funktionieren:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once 'PHPMailer/src/PHPMailer.php';
require_once 'PHPMailer/src/SMTP.php';

Im Übrigen ist dies die Reihenfolge, die in der Readme-Datei und in allen anderen mit PHPMailer bereitgestellten Beispielen verwendet wird. Möglicherweise finden Sie auch die Upgrade-Anleitung .

Die PHPMailerAutoload.php-Datei existiert nicht mehr - der Autoloader von Composer ist viel besser. Die eigene composer.json-Datei von PHPMailer wird verwendet, um Abhängigkeiten aufzulösen und die Kompatibilitätsanforderungen für Ihre App zu kennzeichnen, d. H. Sie wird verwendet, um der Composer-Datei Ihres Projekts mitzuteilen, wie PHPMailer verwendet wird. Dies ist jedoch nicht die Composer-Datei Ihres Projekts selbst - jedes Paket, das Sie laden haben eigene.

Das Entwickeln ohne lokale Instanz PHP ist harte Arbeit - das Entwickeln auf Ihrem Live-Server ist, wird gesagt, "entmutigt"! Wenn Sie PHP nicht direkt installieren können, führen Sie es in einer VM mithilfe von VirtualBox oder einem vollständig in sich geschlossenen XAMPP aus.

9
Synchro
In version 6.02, each of the phpmailer modueles contain the namespace `PHPMailer\PHPMailer` declaration so the following works (no autoloader needed but this routine should be in `/src` folder):
include($_SERVER['DOCUMENT_ROOT'].'/path_setup.php');
require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/PHPMailer.php');
require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/SMTP.php');
require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/Exception.php');
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
3
DBStamps

Ändern Sie require und versuchen Sie, wie im Wiki von PHPMailer festgelegt:

<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;

Link zum Wiki

0
David Fornazier