Wie verwende ich PHPMailer in einem WebHosting Paket

  • Abgespaltet vom Tread https://forum.netcup.de/webhos…php-speichern/#post184822 möchte ich das Thema gerne hier weiter verfolgen.


    Habe mir dies nun mal angesehen, allerdings habe ich keine Ahnung, wie ich dies in meinen WebHosting integriere.

    Muss ich hierzu etwas installieren/hinein kopieren, oder reichen diese Zeilen zum einbinden?

    PHP

    Alles anzeigen

    Gibt es hierzu schone eine Anleitung für Netcup Webhosting Kunden?

    Mit der Suche bin ich nicht so richtig fündig geworden.


    Außerdem habe ich die 3 Dateien PHPMailer.php, Exception.php, SMTP.php in das Verzeichnis Domain.de/httpdocs/PHPMailer kopiert und die 3 use geändert.

    Code
    use PHPMailer\PHPMailer;
    use PHPMailer\SMTP;
    use PHPMailer\Exception;

    Beim Absenden des Formulars kommt es zu einer Fehlermeldung

    Code
    mod_fcgid: stderr: thrown in /var/www/vhosts/hostingYYY.XXX.netcup.net/mydomain.de/httpdocs/PHPMailerKKW.php on line 9, referer: https://www.mydomain.de/contact.htm

    Zeile 9 in PHPMailerKKW.php ist

    Code
    require 'vendor/autoload.php';

    Wie löse ich das?


    Danke


    Gruß Christopher

  • Zur hilfreichsten Antwort springen
  • Habe noch dies versucht allerdings leider auch erfolglos.

    Code
    require 'PHPMailer\PHPMailer.php';
    require 'PHPMailer\SMTP.php';
    require 'PHPMailer\Exception.php';

    Auch das Eintragen in die PHP "include_path" - ".:/usr/local/php81/share/php81:/httpdocs/PHPMailer/" brachte keine Änderung.

  • Ich zitiere dazu einfach mal das README.md von PHPMailer:

    Alternatively, if you're not using Composer, you can download PHPMailer as a zip file, (note that docs and examples are not included in the zip file), then copy the contents of the PHPMailer folder into one of the include_path directories specified in your PHP configuration and load each class file manually:

    PHP
    <?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    require 'path/to/PHPMailer/src/Exception.php';
    require 'path/to/PHPMailer/src/PHPMailer.php';
    require 'path/to/PHPMailer/src/SMTP.php';

    If you're not using the SMTP class explicitly (you're probably not), you don't need a use line for the SMTP class. Even if you're not using exceptions, you do still need to load the Exception class as it is used internally.

    Das sollte/muss dir eigentlich reichen.


    Zusätzlich möchte ich noch pauschal davon abraten PHPMailer oder andere PHP Packages manuell (also ohne Composer) zu installieren.

    Außer du weißt was du tust.

    Eine Installation (und Aktualisierung(!)) mit Composer ist besser und auch im Webhostingpaket unterstützt.

    Matrix: @nan0:nan0.dev - IRC: nan0 on hackint.org - Discord? Nein danke!

    Gefällt mir 4
  • Wie wäre es einmal die Readme durchzuarbeiten: https://github.com/PHPMailer/PHPMailer#readme

    Im Abschnitt Installation ist erklärt wie man den Mailer ohne Composer verwenden kann.


    Zur Überprüfung der Installation eignet sich dann eines der Beispiele, z.B. https://github.com/PHPMailer/P…master/examples/mail.phps

    oder

    https://github.com/PHPMailer/PHPMailer/blob/master/examples/simple_contact_form.phps


    Wichtig: Einstellungen zuvor anpassen, z.B. example.com

  • Zusätzlich möchte ich noch pauschal davon abraten PHPMailer oder andere PHP Packages manuell (also ohne Composer) zu installieren.

    Außer du weißt was du tust.

    Eine Installation (und Aktualisierung(!)) mit Composer ist besser und auch im Webhostingpaket unterstützt.

    ich verstehe es nicht, habe mir die Readme von PHPMailer angesehen

    Code
    Installation & loading
    PHPMailer is available on Packagist (using semantic versioning), and installation via Composer is the recommended way to install PHPMailer. Just add this line to your composer.json file:
    
    "phpmailer/phpmailer": "^6.5"

    wie bekomme ich das in den Composer, was muss ich wohin kopieren bzw. einfügen.

    Es kommt nach dem Suchen immer die Meldung, in der Domain wurde keine Anwendung gefunden.

  • stoffel_hessen dann würde ich dir empfehlen dich mit den Grundlagen von Composer in/mit Plesk mit Composer zu beschäftigen.


    https://getcomposer.org/doc/00-intro.md


    Bzgl. Plesk habe ich das innerhalb von wenigen Sekunden mit der von mir bevorzugen Suchmaschine gefunden:

    https://docs.plesk.com/en-US/12.5/reseller-guide/website-management/websites-and-domains/web-applications/managing-php-project-dependencies-with-composer.74969/

    Vielleicht hilft dir das.


    Da ich Plesk selber nicht verwende und kein Webhostingpaket habe, kann ich dir was Composer in/mit Plesk angeht nicht im Detail helfen, wenn du aber etwas an Infos da lässt (Was du getan hast, was daran nicht funktioniert hat, usw.) können dir andere hier sicherlich helfen.

    Kann mir aber nicht vorstellen das es sonderlich kompliziert ist, da du "zur Not" ja SSH Zugriff auf dein Webhostingpaket hast.

    Matrix: @nan0:nan0.dev - IRC: nan0 on hackint.org - Discord? Nein danke!

  • ich gabe die composer.json aus dem GitLab von PHPMailer in das root meiner Domain mydomain.de kopiert, also nicht in den Ordner httpdocs. Das hat der composer nun gefunden, allerdings meckert er nun wegen der Datei composer.lock, das diese nicht vorhanden ist.

    zur Zeit habe ich leider keinen Zugriff auf meine Domain mit SSH, der Zugriff ist nur per Web möglich

  • ich habe es nach nun mehreren Stunden geschafft, PHPMailer über composer.json mit dem Composer zu installieren.

    Ich finde, die Erklärungen sind zum Teil recht unvollständig für jemanden, der davon noch keine Ahnung hatte.

    Danke für eure Unterstützung

  • Eine abschließende Frage habe ich aber noch.

    Wo sollte die composer.json liegen, es gibt hier wohl mehrere Möglichkeiten.

    1. MeineDomain.de/

    2. MeineDomain.de/httpdocs/

    und vor allem was bringt welche Vorteile/Nachteile mit sich.


    Danke für die Auskunft.


    Gruß Christopher

  • Wenn man mal Composer versteht und weiß was es tut, ist es gar nicht mehr so kompliziert. Für den Anfang wenn man nur einfache Projekte mit PHP schreiben möchte ist es meist erst mal sehr / zu umfangreich. Aber wenn es mal eingerichtet ist und man seine Pakete pflegt erleichtert es das Leben sehr.


    Eventuell hilft dir zum Verstehen, diese Beschreibung (Anfänger freundlich geschrieben) ein wenig.


    https://php-de.github.io/jumpto/composer/

  • Dank dir eine sehr Hilfreiche Seite.

    Hier wird wieder vom "Hauptverzeichnis deiner Anwendung" gesprochen, aber welches der beiden Verzeichnisse

    1. MeineDomain.de/

    2. MeineDomain.de/httpdocs/

    ist denn das Hauptverzeichnis meiner Anwendung?


    Meine erstellten Dateien Html,css und php liegen alle in MeineDomain.de/httpdocs/, aber ist dies damit automatisch mein Hauptverzeichnis?


    Gruß Christopher

  • Rufst du deine Seite mit Domain.de/httpdocs auf? Oder meinst du die Ordnerstruktur im Webhosting?


    Standart ist das deine Domain.de auf den httpdocs (Dokumentenstammverzeichnis) zeigt und wenn du Domain.de eingibst guckt der Webserver ob in diesem Verzeichnis etwas zum Anzeigen liegt. Dies kann aber in dein Einstellungen angepasst werden. Da man ja wächst wird direkt empfohlen Unterordner für die Domain anzulegen (also /httpdocs/domain/) und dort das Root Verzeichnis in den Einstellungen hinzeigen zu lassen.


    In diesem Verzeichnis kannst du dann auch deine composer.json ablegen und mit composer install "installieren" dann musst du nur noch deine autoload.php in luden und kannst die installierten Pakete verwenden.

  • Rufst du deine Seite mit Domain.de/httpdocs auf? Oder meinst du die Ordnerstruktur im Webhosting?

    Ich meinte die Ordnerstruktur im Webhosting


    Zitat

    Da man ja wächst wird direkt empfohlen Unterordner für die Domain anzulegen (also /httpdocs/domain/) und dort das Root Verzeichnis in den Einstellungen hinzeigen zu lassen.

    Wie legt man so etwas sinnvoll an.

    Ich habe die Domain "mydomain.net" lege ich dann unter "/httpdocs/" den Ordner "domain" an oder den Ordner der den Namen der Domain trägt, in diesem Fall "mydomain". Welche Ordner/Unterordner sollte am noch sinnvollerweise anlegen?


    Zitat


    In diesem Verzeichnis kannst du dann auch deine composer.json ablegen und mit composer install "installieren" dann musst du nur noch deine autoload.php in luden und kannst die installierten Pakete verwenden.

    Meine composer.json liegt zur Zeit im gleichen Verzeichnis , in dem auch die Verzeichnissse httpdocs und vendor liegen hier gibt es auch noch die Datei composer.lock.

    Wie kann ich die composer.json verschieben, bzw. löschen und an einem neuen Ort neu anlegen, ohne dem System irgendetwas unter den Füßen wegzuziehen, was es eigentlich benötigt?

    • Hilfreichste Antwort

    Ich habe die Domain "mydomain.net" lege ich dann unter "/httpdocs/" den Ordner "domain" an oder den Ordner der den Namen der Domain trägt, in diesem Fall "mydomain". Welche Ordner/Unterordner sollte am noch sinnvollerweise anlegen?


    /httpdocs/domain/


    Naja.... durch so eine Konstellation ist es beispielsweise möglich über die default netcup-Domain auf die Seite zuzugreifen, was unschöne Nebeneffekte haben könnte. Beispiel:

    https://hosting123456.a2xyz.netcup.net/domein123.de/


    man ist auch gar nicht auf das httpdocs-Verzeichnis angewiesen und kann sich eine vollkommen neue Struktur basteln. Bei mir beispielsweise:

    Code
    /webseiten
    -- domain1.de
    ---- sub1.domain1.de
    ---- sub2.domain1.de
    -- domain2.de
    ---- sub1.domain2.de
    usw...


    Und da man vom default Hosting und dem httpdocs-Verzeichnis dann losgelöst ist, kann man in diesem auch eine .htaccess packen und den Zugriff über die Netcup-Domain komplett sperren (403), weil da haben (zumindest bei mir) Besucher und Bots nix zu suchen. :)

  • danke für die ausführliche Erläuterung.

    Und wie funktioniert das dann mit dem composer, greift der dann auch auf das umgeleitete Verzeichnis

    Code
    /webseiten
    -- domain1.de

    zu, oder gibt es dann hier etwas zu beachten?

  • Code
    /webseiten
    -- domain1.de
    ---- sub1.domain1.de
    ---- sub2.domain1.de
    -- domain2.de
    ---- sub1.domain2.de
    usw...


    Und da man vom default Hosting und dem httpdocs-Verzeichnis dann losgelöst ist, kann man in diesem auch eine .htaccess packen und den Zugriff über die Netcup-Domain komplett sperren (403), weil da haben (zumindest bei mir) Besucher und Bots nix zu suchen. :)

    es geht hier um die .htaccess in der Struktur /webseiten, oder?

    Kannst du das bitte noch etwas genauer erläutern?

    Danke

  • in meinem Beispiel ging es um eine eigene .htaccess im Verzeichnis /httpdocs, das standardmäßig das DocRoot der Netcup Domain hosting123456.a2xyz.netcup.net ist. Nutzt man dieses Verzeichnis wie beschrieben nicht für die eigenen Domains und möchte man den Zugriff auf die default Netcup Domain verbieten, bietet sich diese Vorgehensweise an.


    Aber wir entfernen uns vom eigentlichen Thema PHPMailer immer mehr. ^^