Wissensdatenbank

1 000 FAQs, 500 Anleitungen und erläuternde Videos. Hier gibt es nur Lösungen!

Dieser Leitfaden bietet grundlegende Anweisungen zum Erstellen und Verwenden einer .htaccess- und .user.ini-Datei mit einem Webhosting von Infomaniak.

 

Einleitung

  • Eine .htaccess-Datei wird im Stammverzeichnis einer Website platziert und ermöglicht die Konfiguration des Apache-HTTP-Servers.
    • Als dezentrale Konfigurationsdatei bietet sie eine hohe Flexibilität, um das Verhalten des Servers an die spezifischen Anforderungen der Website anzupassen.
    • Mit dieser Datei können URL-Rewrite-Regeln definiert, Zugriffsbeschränkungen erzwungen, HTTP-Fehler verwaltet und sogar Sicherheitsaspekte wie die Deaktivierung der Anzeige von Dateien/Ordnern angepasst werden.
    • Sie erleichtert auch die Einrichtung von Weiterleitungen und Aliasen und bietet so eine präzise Kontrolle über die Organisation und Zugänglichkeit der Website.
  • Eine .user.ini-Datei ermöglicht die Anpassung der PHP-Direktiven des Ordners (und seiner Unterordner), in dem sie sich befindet.
    • Durch die Beeinflussung auf Ebene des PHP-Interpreters ermöglicht diese Datei die Definition spezifischer Konfigurationen für einen bestimmten Ordner und seine Unterverzeichnisse.
    • Dank ihrer klaren Syntax bietet sie die Möglichkeit, verschiedene Parameter wie das Speicherlimit, die Ausführungszeit von Skripten, die Fehlerbehandlung und andere PHP-bezogene Direktiven zu ändern.
    • Dieser granulare Ansatz ermöglicht es Entwicklern, das Verhalten von PHP fein auf die spezifischen Anforderungen jedes Abschnitts der Website abzustimmen.

 

Eine Datei erstellen…

 

.htaccess

  1. Melden Sie sich über FTP oder SSH bei Ihrem Hosting an.
  2. Erstellen Sie im Stammverzeichnis der betreffenden Website eine neue Datei und geben Sie ihr den folgenden Namen: .htaccess.
  3. Fügen Sie die gewünschten Direktiven in die Datei ein. Informieren Sie sich beispielsweise in diesem anderen Leitfaden.

 

.user.ini

  1. Verbinden Sie sich über FTP oder SSH mit Ihrem Hosting-Konto.
  2. Erstellen Sie an der gewünschten Stelle eine neue Datei und geben Sie ihr den folgenden Namen: .user.ini.
  3. Fügen Sie die gewünschten PHP-Konfigurationseinstellungen in die Datei ein.

Die Änderung der Datei .user.ini benötigt einige Minuten, um wirksam zu werden.


War diese FAQ nützlich?

Dieser Leitfaden bezieht sich auf den IonCube Loader, ein PHP-Modul, das zum Dekodieren von PHP-Skripten verwendet wird, die mit dem IonCube Encoder codiert wurden.

 

Einleitung

  • Die IonCube-Verschlüsselung wird verwendet, um den Quellcode einer Anwendung zu schützen und dessen unbefugte Änderung oder Verbreitung zu verhindern.
  • Durch die Verwendung des IonCube Loaders können Website-Betreiber die Sicherheit ihres Codes und ihrer Inhalte gewährleisten und gleichzeitig eine sichere und einfache Verbreitung ihrer Anwendungen ermöglichen.

 

Die Verwendung des ionCube Loaders

Bei einem Shared Hosting-Paket wird dieser nicht mehr angeboten. Sie können dies im Dashboard überprüfen:

  1. Klicken Sie hier, um die Verwaltung Ihrer Website im Infomaniak Manager aufzurufen (Benötigen Sie Hilfe?).
  2. Klicken Sie direkt auf den Namen der betreffenden Website:
  3. Klicken Sie auf Erweiterte Einstellungen verwalten:
  4. Klicken Sie auf den Reiter PHP-Erweiterungen.
  5. Klicken Sie auf ionCube Loader (falls in der Liste vorhanden), um die Details anzuzeigen:
    • Hier sollte die Nutzung eines Cloud-Servers in Betracht gezogen werden.

Link zu dieser FAQ: https://faq.infomaniak.com/285


War diese FAQ nützlich?

Diese Anleitung beschreibt, wie Sie E-Mails von einer auf Infomaniak gehosteten Website aus senden können, indem Sie die standardmäßig deaktivierte PHP-Funktion mail() verwenden.

 

Einleitung

  • Infomaniak rät dringend davon ab, die PHP-Funktion mail() zum Versenden von E-Mails aus Ihren Anwendungen zu verwenden:
    • Die E-Mails werden als „nicht authentifiziert“ betrachtet und unterliegen daher Beschränkungen.
    • Ihre Zustellbarkeit wird beeinträchtigt, was Ihrem Webauftritt schaden kann.
  • Es wird dringend empfohlen, eine authentifizierte SMTP-Methode zum Versenden von E-Mails zu verwenden.für Ihre E-Mail-Versände aus Ihren Anwendungen; Infomaniak bietet hierfür einen entsprechenden Service an.

 

Absenderadresse angeben

Damit Nachrichten korrekt von Ihrem CMS/Ihrer Webanwendung gesendet werden können (und um Fehler wie Could not instantiate mail function oder sender mismatch zu vermeiden), ist es erforderlich, eine gültige Adresse in den Website-Einstellungen bei Infomaniak anzugeben:

  1. Klicken Sie hier, um die Verwaltung Ihrer Website im Infomaniak Manager aufzurufen (Benötigen Sie Hilfe?).
  2. Klicken Sie direkt auf den Namen der betreffenden Website:
  3. Klicken Sie auf Erweiterte Einstellungen verwalten:
  4. Im Reiter Allgemein geben Sie eine vorhandene E-Mail-Adresse in das Feld E-Mail des Absenders ein.
  5. Klicken Sie auf den blauen Button Speichern:

 

Die E-Mail-Funktion wieder aktivieren

Wenn Sie die E-Mail-Funktion von PHP dennoch nutzen möchten, müssen Sie diese für jede einzelne Ihrer betroffenen Webhosting-Websites aktivieren:

  1. Klicken Sie hier, um die Verwaltung Ihrer Website im Infomaniak Manager aufzurufen (Benötigen Sie Hilfe?).
  2. Klicken Sie direkt auf den Namen der betreffenden Website:
  3. Klicken Sie auf Erweiterte Einstellungen verwalten:
  4. Klicken Sie auf den Reiter PHP / Apache:
  5. Aktivieren Sie die Funktion Mail:
  6. Klicken Sie auf die Schaltfläche Speichern am unteren Rand der Seite, um die Änderungen zu übernehmen.

 

PHP-Beispiele für die Funktion mail()...

 

... in WordPress

Konfigurieren Sie das Senden des standardmäßig in Divi Builder enthaltenen Kontaktformulars:

  1. Melden Sie sich im WordPress-Administrationsbereich an.
  2. Gehen Sie zum Divi-Editor der Seite, die das Kontaktformular enthält.
  3. Klicken Sie auf das Symbol Einstellungen , um das Divi-Kontaktformular zu konfigurieren:
  4. Unter E-MAIL geben Sie die E-Mail-Adresse ein, an die die Formularübermittlungen gesendet werden sollen, und speichern diese:
  5. Standardmäßig erhalten Sie, wenn ein Besucher das Formular zur Kontaktaufnahme verwendet, eine E-Mail von mail@ihre-webseitenadresse. Wenn Sie antworten, wird der Empfänger automatisch die E-Mail-Adresse sein, die der Besucher beim Ausfüllen des Kontaktformulars angegeben hat.

 

… in Prestashop

Öffnen Sie die erweiterten Einstellungen von Prestashop:

  1. Geben Sie den SMTP-Modus an.
  2. Geben Sie localhost als Server ein.
  3. Geben Sie den Port 25 ein.
  4. Geben Sie weder einen Benutzernamen noch ein Passwort an.

 

… zu Joomla

So konfigurieren Sie den E-Mail-Versand über PHPmail (nicht empfohlen) in Joomla:

  1. Melden Sie sich im Administrationsbereich Ihrer Joomla-Website an.
  2. Gehen Sie zu Konfiguration und dann zu Server.
  3. Geben Sie NICHTS in das Feld E-Mail-Adresse der Website ein:

Dies verhindert leider jeden Testversand über den entsprechenden Button, aber es funktioniert, wenn Sie ein Kontaktformular auf Ihrer Website einrichten. Klicken Sie auf Speichern, nachdem Sie das Feld leer gelassen haben.

 

Antwortadresse für PHP-Mail()-Funktion

Beim Senden einer E-Mail mit der PHP-Funktion mail() wird der return-path beispielsweise in der Form root@h2web3.infomaniak.ch eingetragen. Der Header Reply-To:, der im Code Ihres Formulars vorhanden ist, ermöglicht es jedoch, eine gültige Antwortadresse anzugeben.


War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie sich von einem Cloud-Server aus mit einer externen Datenbank verbinden.

 

Einleitung

  • Es ist möglich, eine SSL-Verbindung zu MySQL herzustellen (intern oder extern) – dies ist bei der Verbindungsherstellung anzugeben.
  • Der MySQL-Port 3306 ist standardmäßig geschlossen – um ihn zu öffnen, lesen Sie bitte diese andere Anleitung.
  • Infomaniak installiert PDO_DBLIB nicht.

 

PHP_PDO_ODBC installieren

Voraussetzungen

Sie können die Erweiterung PHP_PDO_ODBC über das Menü PHP-Erweiterungen Ihres Cloud-Servers installieren:

  1. Klicken Sie hier, um zur Verwaltung Ihres Produkts im Infomaniak Manager zu gelangen (Benötigen Sie Hilfe?).
  2. Klicken Sie direkt auf den Namen des betreffenden Produkts.
  3. Klicken Sie im linken Menü auf PHP-Erweiterungen.
  4. Klicken Sie auf die blaue Schaltfläche Erweiterung installieren.
  5. Wählen Sie die Erweiterung PHP_PDO_ODBC aus.
  6. Bestätigen Sie die Installation.

 

Konfigurieren Sie den Konnektor

Die Konfiguration des Treibers ist bereits in /etc/odbcinst.ini definiert:

[FreeTDS]
Description = Zugriff auf eine MS SQL-Datenbank mit dem Free TDS-Treiber
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

Es ist nicht erforderlich, diese statisch in der Datei .odbc.ini oder im Home-Verzeichnis des Benutzers ‍~~/.odbc.ini‍ oder auch dynamisch im PHP-Code neu zu definieren.

Beispiel: Wenn der Treiber FreeTDS bereits definiert ist, muss auch die Version des Treibers am Ende der Deklaration des pdo-Objekts angegeben werden:

$con = new PDO('odbc:Driver=FreeTDS;Server=__SERVER_IP__;Port=3306;DATABASE=__DATABASE_NAME__;UID=__USERNAME__;PWD=__PASSWORD__;TDS_Version=8.0');

Link zu dieser FAQ: https://faq.infomaniak.com/895


War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie den Wert max_children auf Ihrem Cloud Server erhöhen können, um die Anzahl der gleichzeitig ausführbaren PHP-Prozesse für Ihre Website zu erhöhen. Dies ist sehr hilfreich, um Probleme mit endlosen Ladezeiten auf Ihrer Website zu beheben.

 

Einleitung

  • Standardmäßig ist bei allen Hosting-Angeboten die Grenze für max_children auf 20 festgelegt.
    • Obwohl es möglich ist, diesen Wert im Infomaniak Manager zu erhöhen, wird die Grenze für max_children automatisch an die Konfiguration Ihres Cloud-Servers angepasst.
    • Um diese Grenze bei einem Shared Hosting zu erhöhen, wechseln Sie zu einem Cloud-Server.
  • Um zu verstehen, wie Sie die benötigte Anzahl von max_children optimal berechnen können, lesen Sie diesen Artikel zu diesem Thema.

 

Den Maximalwert für „max_children“ erhöhen

Voraussetzungen

  • Stellen Sie sicher, dass Sie über die erforderlichen Ressourcen auf dem Cloud-Server verfügen.
  • Stellen Sie sicher, dass nicht alle Ressourcen des Cloud-Servers ausgelastet sind; wenn dies der Fall ist, hat eine Erhöhung des Werts max_children keine Auswirkung (Ressourcen des Cloud-Servers ändern).
  • Überwachen Sie die Ressourcenauslastung Ihres Servers. Falls die Ressourcen Ihres Servers die maximale Kapazität erreichen, ist es erforderlich,prüfen Sie, ob die Prozesse und Ihre Website optimiert sind, bevor Sie eine Erhöhung des Werts max_children in Erwägung ziehen.
  • Überprüfen Sie die PHP-Fehlerprotokolle im Ordner /ik-logs (Protokolle des Hauptprozesses php – Dateiname: php-fpm.log), um festzustellen, ob das Limit „max_children“ überschritten wurde. Beispiel für einen Fehler: [05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it

Um auf die Einstellungen für PHP / Apache der Website zuzugreifen, bei der der Wert max_children auf einem Cloud-Server erhöht werden muss, lesen Sie bitte diese Anleitung.

Sie können unter anderem…

  • … einen neuen Wert für max_children auswählen:

Vergessen Sie nicht, die Änderungen unten auf der Seite zu speichern.

 

Beschränkungen je nach Server

Begrenzung von max_children basierend auf den Ressourcen des Cloud-Servers:

Cloud-Server-Konfigurationmax_children
2 CPUs / 6 GB RAM20
4 CPU / 12 GB RAM40
6 CPU / 18 GB RAM60
8 CPU / 24 GB RAM80
12 CPU / 36 GB RAM120
16 CPU / 48 GB RAM160
24 CPU / 72 GB RAM240
32 CPU / 96 oder 128 GB RAM320

War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie HSTS für eine Website deaktivieren oder konfigurieren.

 

Einleitung

  • Wenn HSTS für eine Website aktiviert ist, weist der Server den Besuchern der Website (sofern ihr Webbrowser dies unterstützt) an, alle unsicheren Links durch sichere Links zu ersetzen.
  • Beispiel: http://www.domain.xyz.com/one/page/ wird automatisch durch https://www.domain.xyz/one/page/ ersetzt.
  • Nach der Aktivierung eines SSL-Zertifikats für eine Website wird HSTS wie folgt konfiguriert: max-age=16000000.

 

HSTS deaktivieren…

 

… mit einem CMS (WordPress, Joomla usw.)

Fügen Sie in alle vom CMS generierten Seiten die folgende Zeile ein:

header( 'Strict-Transport-Security: max-age=0;' );

Für WordPress kann diese Direktive beispielsweise in der Datei functions.php Ihres Themes hinzugefügt werden:

add_action( 'send_headers', 'add_header_xua' );
function add_header_xua() {
header( 'Strict-Transport-Security: max-age=0;' );
}

Weitere Informationen zu WordPress

 

… mit einer PHP-Website

Fügen Sie die folgende Zeile in alle PHP-Seiten ein:

header( 'Strict-Transport-Security: max-age=0;' );

Um dies zu erreichen, ohne jede PHP-Seite einer Website ändern zu müssen, kann die Direktive auto_prepend_file in der Datei .user.ini der betreffenden Website verwendet werden:

auto_prepend_file=/home/clients/xxxx/web/hsts_disable.php

... mit der folgenden Datei hsts_disable.php:

header( 'Strict-Transport-Security: max-age=0;' );
```

… mit einer Website mit statischen Inhalten (kein PHP)

 

… avec un site au contenu statique (non PHP)

Fügen Sie diesen Header in eine Datei .htaccess ein:

# BEGIN DISABLE HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=0; includeSubDomains;"
</IfModule>
# END DISABLE HSTS

 

HSTS anpassen

Der Standardwert kann in den PHP-Dateien Ihrer Website mit der folgenden Direktive geändert werden:

header( 'Strict-Transport-Security: max-age=X; includeSubdomains; preload' );

(X ist die gewünschte Anzahl an Sekunden).

 

HSTS für alle gehosteten Subdomains aktivieren

includeSubDomains; ist standardmäßig aktiviert und, wie der Name schon sagt, werden dadurch die Subdomains in die „Strict Transport Security“ einbezogen.

Wenn ein Besucher eine unsichere Subdomain aufruft, leitet der Browser automatisch zu HTTPS weiter und löst einen Sicherheitsfehler aus.

Wenn dieses Verhalten nicht gewünscht ist, muss dieser Header entfernt werden.

 

Den HSTS-Cache des Browsers löschen…

… in Chrome

  1. Geben Sie in Chrome chrome://net-internals/#hsts ein.
  2. Geben Sie den Domainnamen in das Textfeld im Abschnitt „Domänensicherheitsrichtlinien löschen“ ein.
  3. Klicken Sie auf die Schaltfläche Löschen.
  4. Geben Sie den Domainnamen in das Textfeld im Abschnitt „HSTS-Abfrage“ ein.
  5. Klicken Sie auf die Schaltfläche „Abfrage“.
  6. Die Antwort sollte „Nicht gefunden“ lauten.

… in Safari

  1. Schließen Sie zunächst den Browser Safari.
  2. Löschen Sie die Datei ~/Library/Cookies/HSTS.plist.
  3. Öffnen Sie Safari erneut.

… in Firefox

  1. Schließen Sie in Firefox alle Tabs.
  2. Öffnen Sie das Firefox-Menü und klicken Sie auf „Verlauf“ / „Verlauf anzeigen“.
  3. Suchen Sie die Seite, von der Sie die HSTS-Einstellungen löschen möchten.
  4. Klicken Sie mit der rechten Maustaste auf einen der entsprechenden Einträge.
  5. Wählen Sie Diese Website vergessen.

War diese FAQ nützlich?

Dieser Leitfaden bezieht sich auf Laravel, ein Open-Source-Web-Framework, das in PHP geschrieben ist und das Modell-View-Controller-Prinzip (MVC) verwendet. Lesen Sie auch deren Dokumentation.

 

Voraussetzungen

 

Installation von Laravel 11

Dazu:

  1. Melden Sie sich per SSH auf dem Server an (Benötigen Sie Hilfe?).
  2. Navigieren Sie mit dem Befehl „cd Pfad-zum-Website-Verzeichnis“ in das Website-Verzeichnis (z. B. cd sites/laravel.domain.xyz).
  3. Erstellen Sie ein neues Projekt, indem Sie den Befehl composer create-project laravel/laravel example-app ausführen.
  4. Ändern Sie die Datei .env im Stammverzeichnis des Hostings, um die Verbindungseinstellungen für die neue Datenbank zu aktualisieren:
    • DB_CONNECTION=mysql
    • DB_HOST=xxxx.myd.infomaniak.com
    • DB_PORT=3306
    • DB_DATABASE= der Name der MySQL-Datenbank (xxxx_newbdd)
    • DB_USERNAME= der MySQL-Benutzer mit den entsprechenden Rechten für diese Datenbank
    • DB_PASSWORD= das zugehörige Passwort
  5. Navigieren Sie zum Projektverzeichnis und führen Sie die Migration über SSH aus:
    cd example-app
    php artisan migrate
  6. Ändern Sie das Zielverzeichnis, sodass es auf das Unterverzeichnis „public“ des Projekts verweist, hier /sites/laravel.domain.xyz/example-app/public.

War diese FAQ nützlich?

Dieser technische Leitfaden beschreibt die Ressourcenbeschränkungen für die Webhosting-Angebote von Infomaniak. Um die Ursache für Script-Unterbrechungen zu verstehen, ist es wichtig, zwischen der Echtzeit (Uhrzeit) und der Rechenzeit (Prozessor) zu unterscheiden.

 

1. MySQL-Verbindungszeit (I/O)

Grenzwert: 30 Sekunden (tatsächliche Zeit)

Dieser Grenzwert entspricht der absoluten, tatsächlich verstrichenen Zeit (gemessen mit einer Stoppuhr). Er betrifft die Kommunikation zwischen PHP und dem Datenbankserver (MySQL/MariaDB).

Sobald eine Verbindung hergestellt wurde, räumt der Datenbankserver maximal 30 Sekunden Zeit ein, um die Anfrage zu empfangen, auszuführen und die Ergebnisse zurückzugeben. Wenn dieser Zeitraum überschritten wird (oft aufgrund einer schlecht optimierten SQL-Abfrage), trennt der MySQL-Server die Verbindung abrupt. Dies führt in der Regel zu dem Fehler MySQL server has gone away.

 

2. PHP-Verarbeitungszeit (CPU)

Limit: 10 Sekunden CPU-Zeit

Diese Begrenzung bezieht sich ausschließlich auf die Rechenleistung, die der Webserver für die Ausführung von PHP-Code benötigt.

Es ist wichtig zu beachten, dass die Wartezeit nicht mitgezählt wird. Wenn PHP auf eine Antwort von der Datenbank wartet, pausiert es und verbraucht kaum CPU-Zeit. Daher wird ein Skript nur dann vom Webserver unterbrochen, wenn es über einen kumulierten Zeitraum von mehr als 10 Sekunden intensive Berechnungen durchführt (komplexe Schleifen, Kryptografie, Dateiverarbeitung).

 

Zusammenwirken der beiden Limits

Um die Stabilität der Anwendung zu gewährleisten, muss jede Operation gleichzeitig diese beiden unterschiedlichen Bedingungen erfüllen:

  • Die Anwendung hat insgesamt 30 Sekunden Zeit, um mit der Datenbank zu interagieren (Netzwerk-Latenz + SQL-Ausführung).
  • Die Anwendung verfügt über 10 Sekunden reine Rechenzeit zur Verarbeitung der empfangenen Daten.

Beispiel für eine korrekte Funktionsweise: Ein Skript, das 25 Sekunden auf eine komplexe Antwort von MySQL (I/O) wartet und das Ergebnis dann 2 Sekunden lang verarbeitet (CPU), funktioniert einwandfrei, da es keines der beiden individuellen Limits überschritten hat, auch wenn die Gesamtzeit 27 Sekunden beträgt.

Link zu dieser FAQ: https://faq.infomaniak.com/481


War diese FAQ nützlich?

Dieser Leitfaden bezieht sich auf Redis, ein PHP-Modul für Infomaniak Cloud Server.

 

Einleitung

  • Redis wird zusammen mit PHP verwendet, um die Leistung zu verbessern, indem es als Cache für temporäre Daten dient und die Benutzer-Sessions verwaltet, wodurch die Effizienz von Webanwendungen gesteigert wird.
  • Redis ermöglicht auch die Implementierung von Warteschlangensystemen und die temporäre Speicherung von Daten für asynchrone Aufgaben oder Statistiken.

 

Redis installieren

Redis kann über Fast Installer installiert werden. Die Anwendung ist mit wenigen Klicks auf Ihrem Cloud-Server verfügbar:

  • Nach der Installation ist Redis über die IP-Adresse/den Port localhost:6379 oder 127.0.0.1:6379 erreichbar.
  • Das Passwort für Redis muss zwischen 15 und 99 Zeichen lang sein (einschließlich).

War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie den Wert der PHP-Direktive include_path ändern.

 

Ändern des include_path

Wie bei jeder anderen PHP-Einstellung wird auch include_path in der Datei .user.ini definiert.

Hier ist ein Beispiel für einen Pfad, den Sie in Ihrer Datei .user.ini verwenden können:

  • Der Punkt (.) am Anfang sorgt dafür, dass das aktuelle Verzeichnis bei der Suche berücksichtigt wird.
  • Le point (.) au début permet de conserver le répertoire courant dans la recherche.
  • Der Doppelpunkt (:) dient als Trennzeichen zwischen den einzelnen Ordnern.

Lesen Sie diese andere Anleitung zum Thema phpinfo, um zu überprüfen, ob Ihre neue Direktive berücksichtigt wurde (es kann einige Minuten dauern, bis die Änderung wirksam wird).

Obwohl diese Methode weiterhin funktioniert, ist die Verwendung des Autoloaders von Composer heutzutage die bevorzugte Lösung für die Verwaltung der Includes.


War diese FAQ nützlich?

Dieser Leitfaden beschreibt die Softwarebibliotheken, mit denen das PDF-Format bearbeitet werden kann, und die mit den verschiedenen Webhosting-Angeboten von Infomaniak kompatibel sind.

 

Einleitung

  • Die PHP-Erweiterungen PDF ermöglichen unter anderem die Erstellung von PDF-Dokumenten aus dynamischen Daten, beispielsweise zur Erstellung personalisierter Rechnungen.

 

PDF und Cloud-Server

Auf dem Cloud-Server können Sie Apps installieren, wie z. B. PDFtk

Bei Shared Hosting ist ImageMagick aktiv und unterstützt die Formate EPDF, PDF und PDFA.


War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie Memcached verwalten und insbesondere feststellen können, ob dieses In-Memory-Caching-System auf Ihrem Managed Cloud Server ordnungsgemäß funktioniert.

 

Voraussetzungen

 

Überprüfen, ob Memcached ausgeführt wird

Um die korrekte Funktion von Memcached zu überprüfen:

  1. Kopieren Sie den folgenden Code in eine PHP-Datei (Verbindung zum lokalen Memcache-Server):

    $fp = fsockopen("localhost", 11211);
    if ($fp) {
    // on demande les stats
    fwrite($fp, "stats\n");
    while (!feof($fp)) {
    $buf = rtrim(fgets($fp));
    if (preg_match('/^STAT curr_items ([0-9]+)$/', $buf, $matches)) {
    // le nombre d'items stockes
    print $matches[1] . PHP_EOL;
    } elseif (preg_match('/(END|ERROR)/', $buf)) {
    // fin des stats
    break;
    }
    }
    fclose($fp);
    } else {
    print "Error: cannot connect to local memcached server: $!" . PHP_EOL;
    }
  2. Laden Sie die PHP-Datei auf Ihrem Hosting hoch.
  3. Führen Sie die PHP-Datei aus.

Das Skript gibt die Anzahl der Elemente zurück, die im Speicher des Servers zwischengespeichert sind.

 

Memcached aktivieren auf…

… Prestashop

Die native Integration von Memcached in die Prestashop-Anwendung vereinfacht deren Konfiguration. Um sie zu aktivieren:

  1. Greifen Sie auf Ihren Prestashop-Administrationsbereich zu.
  2. Navigieren Sie zum Reiter Erweiterte Einstellungen.
  3. Wählen Sie Leistung aus.
  4. Wählen Sie im Dropdown-Menü unter Cache verwenden im Abschnitt Caching die Option Ja aus.
  5. Wählen Sie CacheMemcached aus.
  6. Fügen Sie einen Server hinzu, indem Sie die erforderlichen Informationen angeben, z. B.:
    1. die IP-Adresse: 127.0.0.1
    2. den Port: 11211
    3. das Gewicht: 1

Sie können die Informationen überprüfen, indem Sie auf den Button „Server testen“ klicken, bevor Sie sie am Ende des Abschnitts „Caching“ speichern.

Sobald dieser Schritt abgeschlossen ist, ist Ihre PrestaShop-Anwendung bereit, Memcached zu verwenden, um bestimmte API-Aufrufe, Datenbankabfragen und Objekte zwischenzuspeichern.


War diese FAQ nützlich?

Dieser Leitfaden richtet sich an Entwickler und Webmaster, die Probleme bei der Darstellung von Sonderzeichen (z. B. Akzente, arabische Zeichen, chinesische Zeichen, Emojis usw.) auf einer Infomaniak-Website oder in deren Datenbank feststellen.

 

Einleitung

  • Häufige Ursachen für falsch dargestellte Zeichen, die anstelle von Sonderzeichen oder Emojis wie ?? angezeigt werden:
    • PHP-Verbindung in utf8 anstelle von utf8mb4
    • MySQL-Tabelle oder -Spalte in latin1 oder utf8 anstelle von utf8mb4
    • SQL-Datei, die anders als die Importeinstellung codiert ist
    • Falsch codierte HTML-/CSS-/JS-Dateien
    • Fehlende oder falsche Charset-Deklaration auf HTML-, PHP- oder HTTP-Ebene
  • Übliche Lösungen:
    • Überall utf8mb4 verwenden: Datenbank, Verbindungen, Tabellen, Spalten, Dateien, Header
    • Die Codierung aller Dateien und Datenbank-Dumps überprüfen
    • Die Anzeige von Emojis, Akzenten und anderen mehrsprachigen Zeichen testen
  • Lesen Sie auch diese andere Anleitung, um eine andere Kodierung bei der Verbindung zu einer MySQL-Datenbank zu erzwingen.

 

Verwenden Sie einen Texteditor, der das Speichern in UTF-8 ohne BOM unterstützt (Visual Studio Code, Sublime Text, Notepad++...)

 

1. Überall UTF-8 oder UTF-8MB4 verwenden

Die MySQL-Kodierung utf8 unterstützt keine 4-Byte-Zeichen, wie z. B. Emojis. Diese werden als ?? angezeigt. Daher sollte utf8mb4 verwendet werden, das eine vollständige UTF-8-Implementierung darstellt.

 

2. HTML – Korrekte Angabe der Zeichenkodierung

Im <head> Ihrer HTML-Seiten:

Stellen Sie außerdem sicher, dass die CSS-/JS-Dateien im UTF-8-Format (ohne BOM) gespeichert sind.

Assurez-vous aussi que les fichiers CSS/JS sont enregistrés en UTF-8 (sans BOM). 

 

3. PHP – UTF-8 oder UTF-8MB4 erzwingen

a) HTTP-Header

header('Content-Type: text/html; charset=utf-8');

b) MySQL-Verbindung (MySQL-API)

b) Connexion MySQL (API MySQL)

$connection = mysql_connect($host, $user, $pass);
mysql_set_charset('utf8mb4', $connection);

c) PDO-Verbindung

 $dsn = "mysql:host=localhost;dbname=ma_base;charset=utf8mb4";
$pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

 

4. MySQL-Datenbank

a) Konfiguration in phpMyAdmin

  • Datenbank, Tabellen und Spalten müssen in utf8mb4_unicode_ci oder utf8mb4_general_ci codiert sein.
  • Auf der Registerkarte Operationen wählen Sie utf8mb4_unicode_ci für die Sortierung aus.

b) Nützliche SQL-Befehle

ALTER DATABASE ma_base CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE ma_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

c) Nach der PHP-Verbindung

mysqli_query($conn, "SET NAMES 'utf8mb4'");
mysqli_query($conn, "SET CHARACTER SET 'utf8mb4'");

 

5. .user.ini- / .htaccess-Datei

Um die Zeichenkodierung serverseitig (Apache) zu erzwingen:

AddDefaultCharset utf-8
Header set Content-Type "text/html; charset=utf-8"
# Für PHP
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8

 

6. Importieren/Exportieren von SQL-Dumps

Fehler, bei denen beispielsweise é zu ? oder ein Emoji ☺ zu ?? wird, entstehen oft durch eine fehlerhafte Zeichenkodierung.

Überprüfen Sie die Kodierung der SQL-Datei vor dem Import. Verwenden Sie gegebenenfalls iconv:

iconv -f ISO-8859-1 -t UTF-8 dump.sql > dump_utf8.sql

Geben Sie in phpMyAdmin die zu verwendende Zeichenkodierung für den Import an (z. B. UTF-8, UTF-8MB4 oder latin1, je nach Datei).


War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie ein bestehendes Webhosting-Angebot ändern können, um beispielsweise zusätzliche Websites zu hosten, falls das maximale Website-Limit erreicht ist, oder eine neuere Hosting-Lösung zu erhalten, um von den neuesten Versionen von PHP & MySQL zu profitieren.

 

Zusätzliche Websites, Speicherplatz oder IP-Adressen bestellen

Um auf den Konfigurator für Webhosting zuzugreifen:

  1. Klicken Sie hier, um die Verwaltung Ihres Webhostings im Infomaniak Manager aufzurufen (Benötigen Sie Hilfe?).
  2. Klicken Sie auf das Aktionsmenü ⋮ rechts neben dem betreffenden Hosting-Angebot.
  3. Klicken Sie auf Angebot bearbeiten:
  4. Erhöhen Sie die Werte, die Sie ändern möchten.
  5. Klicken Sie auf die Schaltfläche Weiter, um zur Bezahlung der vorgenommenen Änderungen an Ihrem Hosting zu gelangen:

 

Auf einen aktuelleren Server umsteigen

Um eine Hosting-Lösung auf einem aktuelleren Server zu erhalten und somit unter anderem von den neuesten Versionen von PHP & MySQL zu profitieren, können Sie entweder…

  • … lesen Sie diese andere Anleitung und befolgen Sie die darin beschriebene Vorgehensweise bis zum Ende:
  • … lesen Sie diese andere Anleitung und befolgen Sie die darin beschriebene Vorgehensweise bis zu Schritt 4, klicken Sie dann auf die Schaltfläche, um zu aktualisieren:

Wenn kein Informationsbanner angezeigt wird, bedeutet das, dass Sie bereits ein aktuelles Hosting-Angebot nutzen.

Link zu dieser FAQ: https://faq.infomaniak.com/626


War diese FAQ nützlich?

Dieses Handbuch bezieht sich auf das Apache-Modul mod_auth_mysql, das die Benutzerauthentifizierung und die Zugriffskontrolle über eine MySQL-Datenbank ermöglicht.

 

Bei einem Shared Hosting

Das Modul mod_auth_mysql ist bei Shared-Hosting-Angeboten nicht verfügbar. Sie sollten stattdessen einen Cloud-Server in Betracht ziehen oder PHP-Skripte und Sessions verwenden.

Link zu dieser FAQ: https://faq.infomaniak.com/363


War diese FAQ nützlich?

Dieser Leitfaden erklärt die Funktionsweise, Konfiguration und Verwaltung von ModSecurity auf den Servern von Infomaniak.

 

Einleitung

  • ModSecurity (mod_secure) ist auf den Servern von Infomaniak verfügbar und standardmäßig aktiviert:
    • Alle HTTP-Anfragen werden den von ModSecurity definierten Sicherheitsregeln unterzogen.
    • Die PHP-Erweiterung uploadprogress ist auf den Servern von Infomaniak nicht verfügbar, da PHP in der FPM-Version verwendet wird.
  • Es ist nicht möglich, ModSecurity auf den Servern von Infomaniak zu deaktivieren:
    • Die Einstellung gilt global für den Server, auf dem Ihre Website gehostet wird, was bedeutet, dass alle definierten Sicherheitsregeln auf Ihre Website angewendet werden.

 

Bei Problemen

Sprachfehler im Browser (Code 403)

Wenn die Fehlermeldung ModSecurity: Zugriff verweigert mit Code 403 (Phase 2). Operator EQ hat 0 bei REQUEST_HEADERS abgeglichen. (...) in Bezug auf ModSecurity angezeigt wird, sollten Sie überprüfen, ob in Ihrem Webbrowser eine Standardsprache konfiguriert ist. Dieser Fehler kann manchmal durch falsch konfigurierte Spracheinstellungen im Browser verursacht werden.

Hinweis „Anfragetext größer als konfigurierte Grenze“

Wenn Sie Meldungen bezüglich des Fehlers oder der Warnung Request body larger than configured limit erhalten, beachten Sie bitte, dass es sich hierbei lediglich um eine Warnung handelt – die Anfrage wird trotzdem verarbeitet und nicht blockiert. Diese Konfiguration ist spezifisch für bestimmte ältere Hosting-Generationen (vom Typ jessie) und lässt alle Anfragen auf dem Server ohne Auswirkungen auf Ihre Besucher zu.


War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie von neuen Versionen von PHP, MySQL und vielen anderen Paketen profitieren können, indem Sie einen Cloud-Server auf eine neue Infomaniak-Infrastruktur migrieren.

 

Einleitung

  • Die Migration ist kostenlos und erfolgt in 3 Schritten:
    1. Infomaniak stellt einen Cloud-Server der neuesten Generation mit den gleichen Eigenschaften wie der aktuelle Server zum gleichen Preis und mit der gleichen Vertragslaufzeit zur Verfügung.
    2. Sie haben einen Monat Zeit, um Ihre Webhosting-Dienste auf den neuen Cloud-Server zu migrieren (siehe unten).
    3. Sobald Ihre Webhosting-Dienste auf den neuen Server migriert wurden, kündigen Sie den alten Cloud-Server.
  • Die FTP-Zugänge und Datenbanken bleiben unverändert.
  • Bei den Hosting-Angeboten ändern sich lediglich die unterstützten Versionen von PHP und MariaDB sowie die IPv4- und IPv6-Adressen des Servers.
  • Die Hostnamen ändern sich nicht und werden automatisch aktualisiert, um auf die neuen IP-Adressen zu verweisen.
  • Bei diesem Vorgang werden die Statistiken zurückgesetzt.

 

Migrationsverfahren

Durch die Migration Ihrer Daten auf die neue Cloud-Infrastruktur erhöhen Sie die Leistung und Zuverlässigkeit Ihrer Websites, die Zugriff auf die neuesten Technologien erhalten:

  1. Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Benötigen Sie Hilfe?).
  2. Klicken Sie direkt auf den Namen, der dem betreffenden Produkt zugewiesen ist.
  3. Klicken Sie auf den blauen Button im Rahmen „Ihr Cloud-Server upgraden“ (oder auf Verwalten):

War diese FAQ nützlich?

Dieser Leitfaden behandelt die Synchronisierung von Servern über das NTP-Protokoll (Network Time Protocol) und die Konfiguration der Zeitzone auf den Infomaniak-Servern.

 

Präzise Server-Synchronisierung über NTP

Die Server von Infomaniak sind alle über das NTP-Protokoll synchronisiert. Das Unternehmen stellt eigene, öffentlich zugängliche Stratum-1-NTP-Server für eine flexible Nutzung bereit.

Um diese Server in Ihre Einstellungen zu integrieren, verwenden Sie den folgenden Eintrag: pool.ntp.infomaniak.ch.

Die Standardeinstellung für die Zeitzone ist UTC. Die PHP-Funktionen sind jedoch so konzipiert, dass sie je nach Bedarf verschiedene Zeitzonen berücksichtigen.

Um die Zeitzone in Ihren PHP-Skripten anzupassen, verwenden Sie die Funktion date_default_timezone_set('UTC').

 

MySQL: Besonderheiten bei der Verarbeitung von Zeitdaten

Die Infomaniak-Infrastruktur unterstützt Funktionen, die eine präzise und effiziente Verarbeitung von Zeitdaten ermöglichen, wobei Zeitzonen berücksichtigt werden, was für viele moderne Anwendungen entscheidend ist:

  • MySQL verwendet eine Datenbank für Zeitzonen, um Informationen über Zeitzonen zu speichern und zu verwalten.
  • Die Tabelle mysql.time_zone enthält die Daten der Zeitzonen, einschließlich Informationen über Zeitverschiebungen, Zeitzonennamen usw.
  • Die Funktion CONVERT_TZ wird verwendet, um in MySQL eine Zeit von einer Zeitzone in eine andere umzuwandeln. Die Syntax lautet: CONVERT_TZ(dt, from_tz, to_tz), wobei:
    • dt das Datum/die Uhrzeit ist, die umgewandelt werden soll.
    • from_tz die Quellzeitzone ist.
    • to_tz die Zielzeitzone ist.
  • Beispiel: CONVERT_TZ('2024-05-14 12:00:00', 'UTC', 'America/New_York') wandelt die Zeit 12:00:00 UTC in die lokale Zeit in New York um.

Link zu dieser FAQ: https://faq.infomaniak.com/487


War diese FAQ nützlich?

Dieses Handbuch bezieht sich auf ImageMagick, eine leistungsstarke Software-Suite zur Bildbearbeitung, die auf den Webhosting- und Cloud-Servern von Infomaniak verfügbar ist.

 

Vereinfachte Installation: Um ImageMagick oder seine Erweiterungen zu installieren, wird empfohlen, Fast Installer über Ihr Control Panel zu verwenden.

 

ImageMagick und Lösungen zur Bildbearbeitung

Für die Bearbeitung Ihrer Bilder (Größenänderung, Konvertierung, Wasserzeichen) stehen Ihnen verschiedene Tools zur Verfügung:

  1. ImageMagick (CLI): Die Hauptanwendung, die über die Befehlszeile (via SSH) verwendet werden kann; der moderne Befehl ist magick, aber die alte Syntax convert ist weiterhin verfügbar.
  2. PHP-Erweiterung imagick: Dies ist die gängigste Lösung für Webseiten (WordPress usw.); sie ermöglicht die direkte Verwendung von ImageMagick in Ihren PHP-Skripten.
  3. GD-Bibliothek: eine leichtere Alternative, die oft vorinstalliert ist und sich ideal für einfache Bearbeitungen (Miniaturansichten, Text auf Bildern) eignet.
  4. PerlMagick: eine spezielle Schnittstelle für Perl-Skripte, um auf die Funktionen von ImageMagick zuzugreifen.

 

Pfade und Befehle

Auf den Infomaniak-Infrastrukturen ist ImageMagick standardmäßig installiert. Die ausführbaren Dateien befinden sich im folgenden Verzeichnis:

/usr/bin/

Hier sind die wichtigsten verfügbaren Befehle:

BefehlHauptanwendung
magick (oder convert)Bilder konvertieren, die Größe ändern und transformieren.
identifyMetadaten einer Datei abrufen (Format, Größe usw.).
mogrifyEine Änderung direkt in der Originaldatei anwenden.
compositeMehrere Bilder übereinander legen (z. B. ein Logo als Wasserzeichen hinzufügen).

Um zu prüfen, ob das Perl-Modul Image::Magick installiert ist, können Sie den folgenden Befehl verwenden:

perl -e 'use Image::Magick; print "Installed\n"';

Link zu dieser FAQ: https://faq.infomaniak.com/322


War diese FAQ nützlich?

Diese Anleitung erklärt, wie Sie ein Problem beim Importieren einer .csv-Datei in eine MySQL-Tabelle beheben können. Die vorgeschlagene Alternative besteht darin, die CSV-Datei zeilenweise mit PHP zu lesen und die Daten in die MySQL-Datenbank einzufügen.

 

Die Funktion „LOAD DATA LOCAL INFILE“ ist deaktiviert

Die Funktion LOAD DATA LOCAL INFILE ermöglicht den direkten Import einer CSV-Datei in eine MySQL-Tabelle. Diese Funktion wird jedoch häufig von Angreifern ausgenutzt, um unbefugten Zugriff auf Websites zu erhalten, die auf Servern gehostet werden, die diese Funktion zulassen.

Um Sicherheitsrisiken zu vermeiden und die Daten der Kunden zu schützen, hat Infomaniak die Funktion LOAD DATA LOCAL INFILE deaktiviert. Benutzer, die ihre CSV-Dateien über phpMyAdmin importieren (ohne die Option „CSV via LOAD DATA“ zu aktivieren), sind davon nicht betroffen.

Hier ist eine alternative Methode, um Daten im CSV-Format in eine MySQL-Tabelle zu importieren. Das folgende Beispiel zeigt, wie Fehler beim Öffnen der CSV-Datei und beim Einfügen der Daten in die Datenbank korrekt behandelt werden.

Dieses Skript verwendet mysqli, um sich mit der Datenbank zu verbinden, und vorbereitete Anweisungen, um die Daten einzufügen. Dies gewährleistet eine bessere Sicherheit, optimale Kompatibilität mit neueren Versionen von PHP und eine einfache Integration in Ihr Projekt, sei es in einem vorhandenen Skript oder einer neuen Datei im Verzeichnis /web:

$fileName = "data.csv";

// Verbindung zur MySQL-Datenbank mit mysqli herstellen
$link = new mysqli("localhost", "username", "password", "database");

// Datenbankverbindung überprüfen
if ($link->connect_error) {
   die("Verbindung fehlgeschlagen: " . $link->connect_error);
}

// CSV-Datei zum Lesen öffnen
if (($handle = fopen($fileName, "r")) !== FALSE) {

   // Jede Zeile der CSV-Datei lesen
   while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {

       // SQL-Abfrage dynamisch vorbereiten
       $query = "INSERT INTO `test` VALUES (" . str_repeat('?,', count($data) - 1) . "?)";
       $stmt = $link->prepare($query);

       // Überprüfen, ob die Abfrage erfolgreich vorbereitet wurde
       if ($stmt === FALSE) {
           die("Abfragevorbereitung fehlgeschlagen: " . $link->error);
       }

       // Parameter binden (Annahme: alle Spalten sind Zeichenketten)
       $types = str_repeat('s', count($data));
       $stmt->bind_param($types, ...$data);

       // Abfrage ausführen
       if (!$stmt->execute()) {
           die("Abfrageausführung fehlgeschlagen: " . $stmt->error);
       }

       // Anweisung schließen
       $stmt->close();
   }

   // CSV-Datei schließen
   fclose($handle);

} else {
   echo "Fehler: Datei konnte nicht geöffnet werden.\n";
   exit(1);
}

// Datenbankverbindung schließen
$link->close();
?>

 

Hilfe erhalten

Es ist leider nicht möglich, genau anzugeben, an welcher Stelle des Skripts diese Codezeilen eingefügt werden müssen.

Wenn diese Methode Probleme verursacht (z. B. beim gleichzeitigen Import mehrerer CSV-Dateien ohne Fehlermeldung), kann dies an der Struktur der Tabellen oder der Indizierung der Felder liegen. Wenden Sie sich in diesem Fall an Ihren Webmaster, damit dieser dies überprüft.

Lesen Sie auch die offizielle PHP-Dokumentation zur Funktion fgetcsv().


War diese FAQ nützlich?