One place for hosting & domains

      Comment installer la pile Linux, Apache, MySQL, PHP (LAMP) sur Ubuntu 20.04 [Démarrage rapide]


      Introduction

      Dans ce guide de démarrage rapide, nous allons installer une pile LAMP sur un serveur Ubuntu 20.04.

      Pour une version plus détaillée de ce tutoriel, avec plus d’explications sur chaque étape, veuillez vous référer à Comment installer la pile Linux, Apache, MySQL, PHP (LAMP) sur Ubuntu 20.04.

      Conditions préalables

      Pour suivre ce guide, vous devrez avoir accès à un serveur Ubuntu 20.04 en tant qu’utilisateur sudo.

      Étape 1 — Installer Apache

      Mettez à jour le cache de votre gestionnaire de paquets et installez ensuite Apache avec :

      • sudo apt update
      • sudo apt install apache2

      Une fois l’installation terminée, vous devrez ajuster les paramètres de votre pare-feu pour autoriser le trafic HTTP sur votre serveur. Exécutez la commande suivante pour autoriser l’accès externe sur le port 80 (HTTP) :

      • sudo ufw allow in "Apache"

      Avec l’ajout de la nouvelle règle de pare-feu, vous pouvez vérifier si le serveur est opérationnel en accédant à l’adresse IP publique ou au nom de domaine de votre serveur depuis votre navigateur web. Vous verrez une page comme celle-ci :

      Ubuntu 20.04 Apache par défaut 

      Étape 2 – Installer MySQL

      Nous allons maintenant installer MySQL, un système de gestion de base de données très répandu utilisé dans les environnements PHP.

      Là encore, utilisez apt pour acquérir et installer ce logiciel :

      • sudo apt install mysql-server

      Une fois l’installation terminée, il est recommandé d’exécuter un script de sécurité qui vient préinstallé avec MySQL. Lancez le script interactif en exécutant :

      • sudo mysql_secure_installation

      Il vous sera demandé si vous souhaitez configurer le VALIDATE PASSWORD PLUGIN. Répondez Y pour oui, ou tout autre chose pour continuer sans activer. Si vous répondez « oui », il vous sera demandé de choisir un niveau de validation du mot de passe.

      Votre serveur vous demandera ensuite de sélectionner et de confirmer un mot de passe pour l’utilisateur root de MySQL. Même si la méthode d’authentification par défaut pour l’utilisateur root de MySQL dispense de l’utilisation d’un mot de passe, même si celui-ci est défini, vous devez définir ici un mot de passe fort pour plus de sécurité.

      Pour le reste des questions, appuyez sur Y et appuyez sur la touche ENTRÉE à chaque invite.

      Note : Au moment de la rédaction de ce document, la bibliothèque MySQL PHP native mysqlnd ne prend pas en charge caching_sha2_authentification,la méthode d’authentification par défaut pour MySQL 8. Pour cette raison, lorsque vous créez des utilisateurs de base de données pour des applications PHP sur MySQL 8, vous devez vous assurer qu’ils sont configurés pour utiliser le mot de passe mysql_native_password à la place. Veuillez vous référer à l’étape 6 de notre guide détaillé LAMP sur Ubuntu 20.04 pour apprendre comment le faire.

      Étape 3 – Installer PHP

      Pour installer PHP et ses dépendances, exécutez :

      • sudo apt install php libapache2-mod-php php-mysql

      Une fois l’installation terminée, vous pouvez exécuter la commande suivante pour confirmer votre version de PHP :

      Output

      PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

      Étape 4 – Création d’un hôte virtuel pour votre site web

      Dans ce guide, nous allons mettre en place un domaine appelé your_domain, mais vous devez le remplacer par votre propre nom de domaine. 

      Apache sur Ubuntu 20.04 a un bloc serveur activé par défaut qui est configuré pour servir des documents à partir du répertoire /var/www/html. Au lieu de modifier /var/www/html, nous allons créer une structure de répertoire au sein de /var/www pour le site your_domain, en laissant/var/www/html en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site. 

      Créez le répertoire pour your_domain comme suit : 

      • sudo mkdir /var/www/your_domain

      Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER qui fera référence à votre utilisateur actuel du système :

      • sudo chown -R $USER:$USER /var/www/your_domain

      Ensuite, ouvrez un nouveau fichier de configuration dans le répertoire sites-available d’Apache en utilisant votre éditeur de ligne de commande préféré :

      • sudo nano /etc/apache2/sites-available/your_domain.conf

      Cela créera un nouveau fichier vierge. Collez dans la configuration suivante :

      /etc/apache2/sites-available/your_domain.conf

      <VirtualHost *:80>
          ServerName your_domain
          ServerAlias www.your_domain
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/your_domain
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Enregistrez et fermez le fichier lorsque vous avez fini de le modifier. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL+X, puis sur Y et sur ENTER.

      Vous pouvez désormais utiliser a2ensite pour activer le nouvel hôte virtuel : 

      • sudo a2ensite your_domain

      Pour désactiver le site web par défaut d’Apache, tapez :

      • sudo a2dissite 000-default

      Pour vous assurer que votre fichier de configuration ne contient pas d’erreurs de syntaxe, exécutez :

      • sudo apache2ctl configtest

      Enfin, relancez Apache pour que ces changements prennent effet :

      • sudo systemctl reload apache2

      Votre nouveau site web est maintenant actif, mais le root web /var/www/your_domain est toujours vide. Créez un fichier index.html à cet endroit afin que nous puissions vérifier que l’hôte virtuel fonctionne comme prévu :

      • nano /var/www/your_domain/index.html

      Incluez le contenu suivant dans ce dossier :

      /var/www/your_domain/index.html

      <html>
        <head>
          <title>your_domain website</title>
        </head>
        <body>
          <h1>Hello World!</h1>
      
          <p>This is the landing page of <strong>your_domain</strong>.</p>
        </body>
      </html>
      

      Now open your browser and access the domain name or IP address of your server on port 8000 :

      http://server_domain_or_IP
      

      Vous verrez une page comme celle-ci :

      Test de l'hôte virtuel Apache

      Étape 5 – Tester PHP avec Apache

      Nous allons maintenant créer un script de test PHP pour confirmer qu’Apache est capable de gérer et de traiter les demandes de fichiers PHP.

      Créer un nouveau fichier nommé info.php à l’intérieur de votre dossier root web personnalisé : 

      • nano /var/www/your_domain/info.php

      Cela ouvrira un fichier vierge. Ajoutez le contenu suivant dans le fichier :

      /var/www/your_domain/info.php

      <?php
      phpinfo();
      

      Lorsque vous avez terminé, enregistrez et fermez le fichier.

      Allez dans votre navigateur web et accédez au nom de domaine ou à l’adresse IP de votre serveur, suivi du nom du script, qui est dans ce cas info.php

      http://server_domain_or_IP/info.php
      

      Vous verrez une page similaire à celle-ci :

      Ubuntu 20.04 PHP info 

      Après avoir vérifié les informations pertinentes sur votre serveur PHP par le biais de cette page, il est préférable de supprimer le fichier que vous avez créé car il contient des informations sensibles sur votre environnement PHP — et votre serveur Ubuntu. Pour ce faire, vous pouvez utiliser rm :

      • sudo rm /var/www/your_domain/info.php

      Tutoriels connexes

      Voici des liens vers des guides plus détaillés relatifs à ce tutoriel :



      Source link

      So installieren Sie Linux, Nginx, MySQL und PHP (LEMP-Stack) unter Ubuntu 20.04


      Einführung

      Der LEMP-Software-Stack ist eine Gruppe von Software, die zur Bereitstellung von dynamischen Webseiten und Webanwendungen verwendet werden kann, die in PHP geschrieben sind. Es handelt sich um ein Akronym, das ein Linux-Betriebssystem mit einem Nginx-Webserver (ausgesprochen wie „Engine-X“) beschreibt. Die Backend-Daten werden in einer MySQL-Datenbank gespeichert und die dynamische Verarbeitung wird mit PHP gehandhabt.

      Dieser Leitfaden zeigt, wie Sie einen LEMP-Stack auf einem Ubuntu 20.04-Server installieren. Das Ubuntu-Betriebssystem erfüllt die erste Anforderung. Wir beschreiben, wie Sie den Rest der Komponenten einrichten und ausführen.

      Voraussetzungen

      Um dieses Tutorial zu absolvieren, benötigen Sie Zugriff auf einen Ubuntu-20.04-Server als ein regulärer non-root sudo user und eine auf Ihrem Server aktivierte Firewall. Sie können zur Einrichtung unserem Leitfaden zur Ersteinrichtung eines Servers für Ubuntu 20.04 folgen.

      Schritt 1 — Installieren des Nginx-Webservers

      Um den Besuchern unserer Website die Webseiten anzuzeigen, stellen wir den leistungsfähigen Webserver Nginx zur Verfügung. Wir verwenden den apt-Paketmanager, um diese Software zu erlangen.

      Da wir apt für diese Sitzung zum ersten Mal verwenden, beginnen Sie mit der Aktualisierung des Paketindexes Ihres Servers. Danach können Sie apt install zum Installieren von Nginx verwenden:

      • sudo apt update
      • sudo apt install nginx

      Geben Sie bei der entsprechenden Aufforderung Y ein, um zu bestätigen, dass Sie Nginx installieren möchten. Sobald die Installation abgeschlossen ist, ist der Nginx-Webserver aktiv und wird auf Ihrem Ubuntu-20.04-Server ausgeführt.

      Wenn Sie die in unserem Leitfaden zur Ersteinrichtung eines Servers empfohlene ufw aktiviert haben, müssen Sie Verbindungen zu Nginx zulassen. Nginx registriert bei der Installation einige verschiedene UFW-Anwendungsprofile. Um zu prüfen, welche UFW-Profile verfügbar sind, führen Sie nun Folgendes aus:

      Output

      Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

      Es wird empfohlen, das restriktivste Profil zu aktivieren, das den von Ihnen benötigten Datenverkehr immer noch zulässt. Da Sie SSL für Ihren Server in diesem Leitfaden nicht konfiguriert haben, müssen Sie nur den regulären HTTP-Verkehr auf Port 80 zulassen.

      Aktivieren Sie dies durch die Eingabe von:

      • sudo ufw allow 'Nginx HTTP'

      Sie können die Änderung überprüfen, indem Sie Folgendes ausführen:

      Die Ausgabe des Befehls zeigt, dass der HTTP-Verkehr jetzt zugelassen wird:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

      Nachdem die neue Firewall-Regel hinzugefügt wurde, können Sie testen, ob der Server ausgeführt wird, indem Sie auf Ihren Domänennamen oder die öffentliche IP-Adresse Ihres Servers in Ihrem Webbrowser zugreifen.

      Wenn Sie keinen Domänennamen haben, der auf den Server verweist, und Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, können Sie diese mit dem folgenden Befehl finden:

      • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

      Hierdurch erhalten Sie einige IP-Adressen. Sie können diese abwechselnd in Ihrem Webbrowser ausprobieren.

      Als Alternative können Sie prüfen, welche IP-Adresse von anderen Stellen im Internet aus erreichbar ist:

      Geben Sie die Adresse ein, die Sie in Ihrem Webbrowser erhalten, und Sie werden zur Standard-Startseite von Nginx weitergeleitet:

      http://server_domain_or_IP
      

      Nginx-Standardseite

      Wenn Sie diese Seite sehen können, haben Sie Nginx erfolgreich installiert und den HTTP-Verkehr für Ihren Webserver aktiviert.

      Schritt 2 — Installieren von MySQL

      Nachdem Sie nun einen funktionierenden Webserver eingerichtet haben, müssen Sie das Datenbanksystem installieren, um Daten für Ihre Website speichern und verwalten zu können. MySQL ist ein beliebtes Datenbankverwaltungssystem, das in PHP-Umgebungen verwendet wird.

      Verwenden Sie auch hier wieder apt zur Beschaffung und Installation der Software:

      • sudo apt install mysql-server

      Wenn Sie dazu aufgefordert werden, bestätigen Sie die Installation, indem Sie Y eingeben und dann ENTER drücken.

      Wenn die Installation abgeschlossen ist, wird empfohlen, ein Sicherheitsskript auszuführen, das in MySQL vorinstalliert ist. Dieses Skript entfernt einige unsichere Standardeinstellungen und sperrt den Zugriff auf Ihr Datenbanksystem. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

      • sudo mysql_secure_installation

      Sie werden gefragt, ob Sie das VALIDATE PASSWORD PLUGIN konfigurieren möchten.

      Anmerkung: Die Aktivierung dieser Funktion bleibt Ihnen überlassen. Sollten Sie sie aktivieren, werden Passwörter, die nicht den angegebenen Kriterien entsprechen, als Fehler von MySQL abgelehnt. Sie können die Validierung deaktiviert lassen, aber sollten immer starke, eindeutige Passwörter für die Datenbankinformationen verwenden.

      Geben Sie Y für Ja oder etwas Anderes ein, um ohne Aktivierung weiterzumachen.

      VALIDATE PASSWORD PLUGIN can be used to test passwords
      and improve security. It checks the strength of password
      and allows the users to set only those passwords which are
      secure enough. Would you like to setup VALIDATE PASSWORD plugin?
      
      Press y|Y for Yes, any other key for No:
      

      Wenn Sie mit „ja“ antworten, werden Sie dazu aufgefordert, eine Stufe der Passwortvalidierung zu wählen. Denken Sie daran, dass die Auswahl von 2 als stärkste Validierungsstufe Fehler ergibt, wenn Sie ein Passwort ohne Zahlen, Buchstaben, Klein- oder Großbuchstaben und Sonderzeichen einrichten oder eines aus geläufigen Wörtern aus einem Wörterbuch.

      There are three levels of password validation policy:
      
      LOW    Length >= 8
      MEDIUM Length >= 8, numeric, mixed case, and special characters
      STRONG Length >= 8, numeric, mixed case, special characters and dictionary              file
      
      Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
      

      Unabhängig davon, ob Sie sich für die Einrichtung des VALIDATE PASSWORD PLUGIN entschieden haben, wird der Server Sie als Nächstes auffordern, ein Passwort für den MySQL root user zu wählen und zu bestätigen. Verwechseln Sie dies nicht mit dem Benutzer für system root. Der Datenbank-root user ist ein administrativer Benutzer mit vollen Berechtigungen über das Datenbank-System. Zwar entbindet die Standardauthentifizierungsmethode für den MySQL root user von der Verwendung eines Passworts, selbst wenn eines festgelegt ist, doch sollten Sie hier als zusätzliche Sicherheitsmaßnahme ein starkes Passwort definieren. Darüber werden wir gleich noch sprechen.

      Wenn Sie Passwortvalidierung aktiviert haben, wird Ihnen die Passwortstärke des soeben eingegebenen root-Passworts gezeigt und Sie werden gefragt, ob Sie das Passwort beibehalten möchten. Wenn Sie mit Ihrem aktuellen Passwort zufrieden sind, geben Sie in der Eingabeaufforderung Y für „ja“ ein:

      Estimated strength of the password: 100
      Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
      

      Drücken Sie bei den restlichen Fragen auf Y und bei jeder Eingabeaufforderung ENTER. Damit werden einige anonyme Benutzer und die Testdatenbank entfernt, ferngesteuerte root-Logins deaktiviert und diese neuen Regeln geladen, damit MySQL die Änderungen, die Sie gerade vorgenommen haben, unverzüglich anwendet.

      Wenn Sie damit fertig sind, testen Sie, ob Sie sich bei der MySQL-Konsole anmelden können, indem Sie Folgendes eingeben:

      Damit wird eine Verbindung zum MySQL-Server als administrativer Datenbank-Benutzer root hergestellt, was durch die Verwendung von sudo abgeleitet wird, wenn dieser Befehl ausgeführt wird. Sie sollten eine Ausgabe wie diese sehen:

      Output

      Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 22 Server version: 8.0.19-0ubuntu5 (Ubuntu) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>

      Um die MySQL-Konsole zu beenden, geben Sie Folgendes ein:

      Beachten Sie, dass Sie kein Passwort angeben müssen, um als root user eine Verbindung herzustellen, obwohl Sie bei der Ausführung des Skripts mysql_secure_installation ein Passwort festgelegt haben. Das liegt daran, dass die standardmäßige Authentifizierungsmethode für den administrativen MySQL-Benutzer unix_socket ist und nicht password. Auch wenn dies zunächst wie ein Sicherheitsproblem aussieht, macht es den Datenbankserver sicherer, da sich nur die Systembenutzer mit sudo-Berechtigungen über die Konsole oder über eine Anwendung, die mit den gleichen Berechtigungen läuft, als root MySQL user anmelden dürfen. Praktisch bedeutet dies, dass Sie den administrativen Datenbank-root user nicht verwenden können, um sich von Ihrer PHP-Anwendung zu verbinden. Das Einrichten eines Passworts für das root-MySQL-Konto funktioniert als Schutz für den Fall, dass die Standardauthentifizierungsmethode von unix_socket in password geändert wird.

      Um die Sicherheit zu erhöhen, richten Sie am besten für jede Datenbank zugeordnete Benutzerkonten mit weniger expansiven Berechtigungen ein, insbesondere dann, wenn Sie mehrere Datenbanken auf Ihrem Server hosten möchten.

      Anmerkung: Zum Zeitpunkt der Verfassung dieses Dokuments unterstützt die native MySQL-PHP-Bibliothek mysqlnd keine caching_sha2_authentication, die standardmäßige Authentifizierungsmethode für MySQL 8. Wenn Sie Datenbankbenutzer für PHP-Anwendungen unter MySQL 8 erstellen, müssen Sie daher so konfigurieren, dass sie stattdessen mysql_native_password verwenden. In Schritt 6 zeigen wir, wie das geht.

      Ihr MySQL-Server ist nun installiert und gesichert. Als Nächstes installieren wir PHP, die letzte Komponente im LEMP-Stack.

      Schritt 3 — Installieren von PHP

      Sie haben Nginx installiert, um Ihre Inhalte bereitzustellen, und MySQL, um Ihre Daten zu speichern und zu verwalten. Jetzt können Sie PHP installieren, um Code zu verarbeiten und dynamische Inhalte für den Webserver zu generieren.

      Während Apache den PHP-Interpreter in jede Anfrage einbindet, benötigt Nginx ein externes Programm, das die PHP-Verarbeitung handhabt und als Brücke zwischen dem PHP-Interpreter selbst und dem Webserver fungiert. Dies ermöglicht eine bessere Gesamtleistung in den meisten PHP-basierten Websites, erfordert jedoch eine zusätzliche Konfiguration. Sie müssen php-fpm installieren, was für „PHP fastCGI-Prozessmanager“ steht, und Nginx anweisen, PHP-Anfragen zur Verarbeitung an diese Software zu übergeben. Außerdem benötigen Sie php-mysql, ein PHP-Modul, das PHP ermöglicht, mit MySQL-basierten Datenbanken zu kommunizieren. Core-PHP-Pakete werden automatisch als Abhängigkeiten installiert.

      Um die php-fpm– und php-mysql-Pakete zu installieren, führen Sie Folgendes aus:

      • sudo apt install php-fpm php-mysql

      Wenn Sie dazu aufgefordert werden, geben Sie Y und ENTER ein, um die Installation zu bestätigen.

      Sie haben nun Ihre PHP-Komponenten installiert. Als Nächstes konfigurieren Sie Nginx, um sie zu verwenden.

      Schritt 4 — Konfigurieren von Nginx zum Verwenden des PHP-Prozessors

      Bei Verwendung des Nginx-Webservers können wir Serverblocks (ähnlich wie virtuelle Hosts in Apache) erstellen, um Konfigurationsdetails einzuschließen und mehr als eine Domäne auf einem einzelnen Server zu hosten. In diesem Leitfaden verwenden wir your_domain als Beispielnamen für die Domäne. Um mehr über die Einrichtung eines Domänennamens mit DigitalOcean zu erfahren, lesen Sie unsere Einführung zu DigitalOcean DNS.

      Auf Ubuntu 20.04 hat Nginx einen Serverblock standardmäßig aktiviert und ist so konfiguriert, dass Dokumente aus einem Verzeichnis in /var/www/html bereitgestellt werden. Das eignet sich gut für eine Website, kann aber umständlich werden, wenn Sie mehrere hosten. Statt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb von /var/www für die Website your_domain und belassen dabei /var/www/html als Standardverzeichnis, das genutzt wird, wenn eine Clientanfrage keine übereinstimmenden Websites ergibt.

      Erstellen Sie das root-Webverzeichnis für your_domain wie folgt:

      • sudo mkdir /var/www/your_domain

      Als Nächstes weisen Sie die Eigentumsrechte des Verzeichnisses mit der Umgebungsvariablen $USER zu, die auf Ihren aktuellen Systembenutzer verweisen wird:

      • sudo chown -R $USER:$USER /var/www/your_domain

      Öffnen Sie dann mit Ihrem bevorzugten Befehlszeileneditor eine neue Konfigurationsdatei im Verzeichnis sites-available von Nginx. Wir verwenden hier nano:

      • sudo nano /etc/nginx/sites-available/your_domain

      Dadurch wird eine neue Leerdatei erstellt. Fügen Sie die folgende Basiskonfiguration ein:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
          server_name your_domain www.your_domain;
          root /var/www/your_domain;
      
          index index.html index.htm index.php;
      
          location / {
              try_files $uri $uri/ =404;
          }
      
          location ~ .php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
           }
      
          location ~ /.ht {
              deny all;
          }
      
      }
      
      
      

      Hier eine Auflistung der Funktionen dieser Anweisungen und Location-Blocks:

      • listen — Hiermit wird definiert, auf welchem Port Nginx lauscht. In diesem Fall lauscht er auf Port 80, dem Standardport für HTTP.
      • root — Hiermit wird die Dokumentenroot definiert, in der die von der Website bereitgestellten Dateien gespeichert werden.
      • index — Hiermit wird die Reihenfolge definiert, in der Nginx die Indexdateien für die Website priorisiert. Es ist gängige Praxis, index.html-Dateien mit einer höheren Priorität als index.php-Dateien aufzulisten, um die schnelle Einrichtung einer Wartungsstartseite in PHP-Anwendungen zu ermöglichen. Sie können diese Einstellungen so anpassen, dass sie Ihren Anwendungsanforderungen entsprechen.
      • server_name — Hiermit wird definiert, auf welche Domänennamen und/oder IP-Adressen dieser Serverblock antworten soll. Verweisen Sie diese Anweisung auf den Domänennamen oder die öffentliche IP-Adresse Ihres Servers.
      • location / — Der erste Location-Block enthält eine Anweisung try_files, die überprüft, ob Dateien oder Verzeichnisse vorhanden sind, die einer URI-Anfrage entsprechen. Wenn Nginx die entsprechende Ressource nicht finden kann, wird der Fehler 404 ausgegeben.
      • location ~ .php$ — Dieser Location-Block handhabt die eigentliche PHP-Verarbeitung, indem er Nginx auf die Konfigurationsdatei fastcgi-php.conf und die Datei php7.4-fpm.sock verweist, wodurch deklariert wird, welche Socket mit php-fpm verknüpft ist.
      • location ~ /.ht — Der letzte Location-Block befasst sich mit .htaccess-Dateien, die Nginx nicht prozessiert. Durch Hinzufügen der Anweisung deny all werden .htaccess-Dateien, die ihren Weg in die Dokumentenroot finden, nicht für Besucher bereitgestellt.

      Wenn Sie mit der Bearbeitung fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, geben Sie hierfür STRG+X ein und dann y und ENTER zur Bestätigung.

      Aktivieren Sie Ihre Konfiguration, indem Sie eine Verknüpfung mit der Konfigurationsdatei aus dem sites-enabled-Verzeichnis von Nginx herstellen:

      • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

      Dadurch wird Nginx angewiesen, die Konfiguration beim nächsten Neuladen zu verwenden. Sie können Ihre Konfiguration auf Syntaxfehler testen, indem Sie Folgendes eingeben:

      Wenn Fehler gemeldet werden, gehen Sie zurück zu Ihrer Konfigurationsdatei, um den Inhalt vor dem Fortfahren zu überprüfen.

      Wenn Sie fertig sind, laden Sie Nginx neu, um die Änderungen anzuwenden:

      • sudo systemctl reload nginx

      Ihre neue Website ist nun aktiv, aber die Web-root /var/www/your_domain ist immer noch leer. Erstellen Sie an diesem Ort eine index.html-Datei, um zu testen, ob Ihr neuer Serverblock wie erwartet funktioniert:

      • nano /var/www/your_domain/index.html

      Fügen Sie in dieser Datei folgende Inhalte ein:

      /var/www/your_domain/index.html

      <html>
        <head>
          <title>your_domain website</title>
        </head>
        <body>
          <h1>Hello World!</h1>
      
          <p>This is the landing page of <strong>your_domain</strong>.</p>
        </body>
      </html>
      

      Gehen Sie nun zu Ihrem Browser und greifen Sie auf den Domänennamen oder die IP-Adresse Ihres Servers zu, wie sie in der server_name-Anweisung in Ihrer Serverblock-Konfigurationsdatei aufgeführt sind:

      http://server_domain_or_IP
      

      Sie sehen in etwa folgende Seite:

      Nginx Serverblock

      Wenn Sie diese Seite sehen, bedeutet das, dass Ihr Nginx-Serverblock wie erwartet funktioniert.

      Sie können diese Datei als temporäre Startseite für Ihre Anwendung so lange belassen, bis Sie sie durch eine index.php-Datei ersetzen. Sobald Sie dies tun, vergessen Sie nicht, die Datei index.html aus Ihrem Dokument-root zu entfernen oder umzubenennen, da sie standardmäßig Vorrang gegenüber einer index.php-Datei erhalten würde.

      Ihr LEMP-Stack ist nun vollständig konfiguriert. Im nächsten Schritt erstellen wir ein PHP-Skript, um zu testen, ob Nginx tatsächlich in der Lage ist, .php-Dateien in Ihrer neu konfigurierten Website zu verarbeiten.

      Schritt 5 — Testen von PHP mit Nginx

      Ihr LEMP-Stack sollte nun vollständig eingerichtet sein. Sie können ihn testen, um zu bestätigen, dass Nginx .php-Dateien korrekt an Ihren PHP-Prozessor übergeben kann.

      Hierfür können Sie eine PHP-Testdatei in Ihrer Dokumentenroot erstellen. Öffnen Sie innerhalb Ihrer Dokumentenroot in Ihrem Texteditor eine neue Datei namens info.php:

      • nano /var/www/your_domain/info.php

      Schreiben oder fügen Sie die folgenden Zeilen in die neue Datei ein. Es handelt sich um einen gültigen PHP-Code, der Informationen über Ihren Server ausgibt:

      /var/www/your_domain/info.php

      <?php
      phpinfo();
      

      Wenn Sie fertig sind, speichern und schließen Sie die Datei durch Eingabe von STRG+X und dann y und ENTER zur Bestätigung.

      Sie können nun in Ihrem Webbrowser auf diese Seite zugreifen, indem Sie den Domänennamen oder die öffentliche IP-Adresse besuchen, die Sie in Ihrer Nginx-Konfigurationsdatei eingerichtet haben, gefolgt von /info.php:

      http://server_domain_or_IP/info.php
      

      Sie sehen dann eine Webseite, die detaillierte Informationen über Ihren Server enthält:

      PHPInfo Ubuntu 20.04

      Nachdem Sie über diese Seite die relevanten Informationen zu Ihrem PHP-Server überprüft haben, ist es am besten, die von Ihnen erstellte Datei zu entfernen, da sie sensible Informationen über Ihre PHP-Umgebung und Ihren Ubuntu-Server enthält. Sie können diese Datei mithilfe von rm entfernen:

      • sudo rm /var/www/your_domain/info.php

      Sie können diese Datei jederzeit regenerieren, falls Sie sie später benötigen.

      Schritt 6 — Testen der Datenbankverbindung von PHP (optional)

      Wenn Sie testen möchten, ob PHP eine Verbindung mit MySQL herstellen kann und Datenbankabfragen ausführt, können Sie eine Testtabelle mit Pseudodaten erstellen und die Inhalte mit einem PHP-Skript abfragen. Bevor wir das tun können, müssen wir eine Testdatenbank und einen neuen MySQL-Benutzer erstellen, der für den Zugriff richtig konfiguriert ist.

      Zum Zeitpunkt der Verfassung dieses Dokuments unterstützt die native MySQL-PHP-Bibliothek mysqlnd nicht caching_sha2_authentication, die standardmäßige Authentifizierungsmethode für MySQL 8. Wir müssen einen neuen Benutzer mit der Authentifizierungsmethode mysql_native_password erstellen, um über PHP eine Verbindung zur MySQL-Datenbank herzustellen.

      Wir erstellen eine Datenbank namens example_database und einen Benutzer namens example_user. Sie können diese Namen jedoch durch andere Werte ersetzen.

      Stellen Sie zuerst unter Verwendung des root-Kontos eine Verbindung zur MySQL-Konsole her:

      Um eine neue Datenbank zu erstellen, führen Sie den folgenden Befehl von Ihrer MySQL-Konsole aus:

      • CREATE DATABASE example_database;

      Jetzt können Sie einen neuen Benutzer erstellen und ihm volle Berechtigungen auf der benutzerdefinierten Datenbank gewähren, die Sie gerade erstellt haben:

      Der folgende Befehl erstellt einen neuen Benutzer namens example_user, wobei mysql_native_password als standardmäßige Authentifizierungsmethode verwendet wird. Wir definieren das Passwort dieses Benutzers als password, aber Sie sollten diesen Wert durch ein sicheres Passwort Ihrer Wahl ersetzen:

      • CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

      Nun müssen wir diesem Benutzer eine Berechtigung für die Datenbank example_database erteilen:

      • GRANT ALL ON example_database.* TO 'example_user'@'%';

      Damit werden dem Benutzer example_user volle Berechtigungen über die example_database gewährt, während dieser Benutzer gleichzeitig daran gehindert wird, andere Datenbanken auf Ihrem Server zu erstellen oder zu ändern.

      Beenden Sie nun die MySQL-Shell mit:

      Sie können testen, ob der neue Benutzer die richtigen Berechtigungen hat, indem Sie sich erneut bei der MySQL-Konsole anmelden, diesmal mit den benutzerdefinierten Anmeldedaten:

      Beachten Sie das -p-Flag in diesem Befehl, das Sie nach dem Passwort fragt, das Sie bei der Erstellung des Benutzers example_user gewählt haben. Nach der Anmeldung bei der MySQL-Konsole bestätigen Sie, dass Sie Zugriff auf die Datenbank example_database haben:

      Damit erhalten Sie die folgende Ausgabe:

      Output

      +--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

      Als Nächstes erstellen wir eine Testtabelle namens todo_list. Führen Sie die folgende Anweisung in der MySQL-Konsole aus:

      • CREATE TABLE example_database.todo_list (
      • item_id INT AUTO_INCREMENT,
      • content VARCHAR(255),
      • PRIMARY KEY(item_id)
      • );

      Geben Sie einige Zeilen an Inhalt in die Testtabelle ein. Sie können den nächsten Befehl ein paar Mal wiederholen, indem Sie verschiedene Werte verwenden:

      • INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

      Um zu bestätigen, dass die Daten erfolgreich in Ihrer Tabelle gespeichert wurden, führen Sie Folgendes aus:

      • SELECT * FROM example_database.todo_list;

      Sie sehen die folgende Ausgabe:

      Output

      +---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

      Nachdem Sie bestätigt haben, dass Sie gültige Daten in Ihrer Testtabelle haben, können Sie die MySQL-Konsole verlassen:

      Sie können nun das PHP-Skript erstellen, das sich mit MySQL verbindet, und Ihre Inhalte abfragen. Erstellen Sie mit Ihrem bevorzugten Editor eine neue PHP-Datei in Ihrem benutzerdefinierten Web-Stammverzeichnis. Verwenden Sie hierzu nano:

      • nano /var/www/your_domain/todo_list.php

      Das folgende PHP-Skript verbindet sich mit der MySQL-Datenbank und den Abfragen für den Inhalt der Tabelle todo_list, wobei die Ergebnisse in einer Liste angezeigt werden. Wenn ein Problem mit der Datenbankverbindung besteht, wird eine Ausnahme ausgegeben. Kopieren Sie diesen Inhalt in Ihr todo_list.php-Skript:

      /var/www/your_domain/todo_list.php

      <?php
      $user = "example_user";
      $password = "password";
      $database = "example_database";
      $table = "todo_list";
      
      try {
        $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
        echo "<h2>TODO</h2><ol>";
        foreach($db->query("SELECT content FROM $table") as $row) {
          echo "<li>" . $row['content'] . "</li>";
        }
        echo "</ol>";
      } catch (PDOException $e) {
          print "Error!: " . $e->getMessage() . "<br/>";
          die();
      }
      

      Speichern und schließen Sie die Datei, wenn die Bearbeitung abgeschlossen ist.

      Sie können diese Seite nun in Ihrem Webbrowser aufrufen, indem Sie den Domänennamen oder die öffentliche IP-Adresse für Ihre Website besuchen, gefolgt von /todo_list.php:

      http://server_domain_or_IP/todo_list.php
      

      Sie sollten nun eine Seite ähnlich wie diese sehen, die den Inhalt anzeigt, den Sie in Ihre Testtabelle eingefügt haben:

      Beispiel PHP To-Do-List

      Das bedeutet, dass Ihre PHP-Umgebung zur Verfügung steht, um mit Ihrem MySQL-Server zu interagieren.

      Zusammenfassung

      In diesem Leitfaden haben wir eine flexible Basis für die Bereitstellung von PHP-Websites und Anwendungen für Ihre Besucher eingerichtet, wobei Nginx als Webserver und MySQL als Datenbanksystem dienen.

      Von hier aus können Sie nun verschiedene weitere Schritte ausführen. Sie sollten beispielsweise sicherstellen, dass Verbindungen zu Ihrem Server gesichert sind. Zu diesem Zweck könnten Sie Ihre Nginx-Installation mit Let’s Encrypt sichern. Wenn Sie diesem Leitfaden folgen, erwerben Sie ein kostenloses TLS/SSL-Zertifikat für Ihren Server, mit dem er Inhalte über HTTPS bereitstellen kann.



      Source link

      Comment utiliser le type de données BLOB MySQL pour stocker des images avec PHP sur Ubuntu 18.04


      L’auteur a sélectionné Girls Who Code pour recevoir un don dans le cadre de l’initiative Écrire pour des donations. 

      Introduction

      Un Binary Large Object (BLOB) est un type de données MySQL qui peut stocker des données binaires telles que des images, du multimédia et des fichiers PDF.

      Lors de la création d’applications qui nécessitent une base de données étroitement couplée où les images doivent être synchronisées avec les données connexes (par exemple, un portail d’employés, une base de données d’étudiants ou une application financière), vous pouvez trouver pratique de stocker des images telles que les photos et signatures de passeport des étudiants dans une base de données MySQL avec d’autres informations connexes.

      C’est là qu’intervient le type de données MySQL BLOB. Cette approche de programmation élimine la nécessité de créer un système de fichiers séparé pour le stockage des images. Le système centralise également la base de données, la rendant plus portable et plus sécurisée car les données sont isolées du système de fichiers. La création de sauvegardes est également plus transparente puisque vous pouvez créer un seul fichier MySQL dump qui contient toutes vos données.

      La récupération des données est plus rapide, et lors de la création des enregistrements, vous pouvez être sûr que les règles de validation des données et l’intégrité référentielle sont maintenues, en particulier lors de l’utilisation des transactions MySQL.

      Dans ce tutoriel, vous allez utiliser le type de données MySQL BLOB pour stocker des images avec PHP sur Ubuntu 18.04.

      Conditions préalables

      Pour suivre ce guide, vous aurez besoin des éléments suivants :

      Étape 1 — Création d’une base de données

      Vous commencerez par créer un exemple de base de données de votre projet. Pour ce faire, connectez-vous en SSH à votre serveur, puis exécutez la commande suivante pour vous connecter à votre serveur MySQL en tant que root :

      Entrez le mot de passe root de votre base de données MySQL et appuyez sur ENTER pour continuer.

      Ensuite, exécutez la commande suivante pour créer une base de données. Dans ce tutoriel, nous l’appellerons test_company :

      • CREATE DATABASE test_company;

      Une fois la base de données créée, vous verrez le résultat suivant :

      Output

      Query OK, 1 row affected (0.01 sec)

      Ensuite, créez un compte test_user sur le serveur MySQL et n’oubliez pas de remplacer PASSWORD par un mot de passe fort :

      • CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD';

      Vous verrez la sortie suivante :

      Output

      Query OK, 0 rows affected (0.01 sec)

      Pour accorder des privilèges complets à test_user sur la base de données test_company, exécutez :

      • GRANT ALL PRIVILEGES ON test_company.* TO 'test_user'@'localhost';

      Vérifiez que vous obtenez le résultat suivant :

      Output

      Query OK, 0 rows affected (0.01 sec)

      Enfin, videz la table des privilèges afin que MySQL recharge les autorisations :

      Assurez-vous de voir le résultat suivant :

      Output

      Query OK, 0 rows affected (0.01 sec)

      Maintenant que la base de données test_company et test_user sont prêts, vous allez passer à la création du tableau products pour le stockage d’échantillons de produits.  Vous utiliserez cette table plus tard pour insérer et récupérer des enregistrements afin de faire la démonstration du fonctionnement de MySQL BLOB.

      Déconnectez-vous du serveur MySQL :

      Ensuite, reconnectez-vous avec les informations d’identification du test_user que vous avez créé :

      Entrez le mot de passe du test_user et appuyez sur ENTER (ENTRÉE) pour continuer. Ensuite, passez à la base de données test_company en tapant ce qui suit :

      Une fois la base de données test_company sélectionnée, MySQL affichera :

      Output

      Database changed

      Ensuite, créez un tableau products en exécutant :

      • CREATE TABLE `products` (product_id BIGINT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(50), price DOUBLE, product_image BLOB) ENGINE = InnoDB;

      Cette commande crée un tableau nommé products. Le tableau contient quatre colonnes :

      • product_id : Cette colonne utilise un type de données BIGINT afin d’accueillir une grande liste de produits jusqu’à un maximum de 2⁶³-1 articles. Vous avez marqué la colonne comme PRIMARY KEY pour identifier les produits de manière unique. Pour que MySQL puisse gérer la génération de nouveaux identifiants pour des colonnes insérées, vous avez utilisé le mot-clé AUTO_INCREMENT.

      • product_name : Cette colonne contient les noms des produits. Vous avez utilisé le type de données VARCHAR car ce champ gère généralement des caractères alphanumériques jusqu’à un maximum de 50 caractères — la limite de 50 n’est qu’une valeur hypothétique utilisée pour les besoins de ce tutoriel.

      • price : à des fins de démonstration, votre tableau products contient la colonne price pour stocker le prix de détail des produits. Comme certains produits peuvent avoir des valeurs flottantes (par exemple, 23.69, 45,36, 102.99), vous avez utilisé le type de données DOUBLE.

      • product_image : Cette colonne utilise un type de données BLOB pour stocker les données binaires réelles des images des produits.

      Vous avez utilisé le moteur de stockage InnoDB pour la table afin de prendre en charge un large éventail de fonctionnalités, y compris les transactions MySQL. Après avoir exécuté ceci pour créer le tableau products, vous verrez le résultat suivant :

      Output

      Query OK, 0 rows affected (0.03 sec)

      Déconnectez-vous de votre serveur MySQL :

      Vous obtiendrez le résultat suivant

      Output

      Bye

      Le tableau products est maintenant prêt à stocker quelques enregistrements, y compris des images des produits et vous le remplirez avec quelques produits lors de la prochaine étape.

      Étape 2 — Création d’un script PHP pour connecter et alimenter la base de données

      Au cours de cette étape, vous allez créer un script PHP qui se connectera à la base de données MySQL que vous avez créée à l’Etape 1. Le script préparera trois exemples de produits et les insérera dans le tableau products.

      Pour créer le code PHP, ouvrez un nouveau fichier avec l’éditeur de texte :

      • sudo nano /var/www/html/config.php

      Entrez ensuite dans le fichier et remplacez PASSWORD avec le mot de passe de test_user que vous avez créé à l’Étape 1 :

      /var/www/html/config.php

      <?php
      
      define('DB_NAME', 'test_company');
      define('DB_USER', 'test_user');
      define('DB_PASSWORD', 'PASSWORD');
      define('DB_HOST', 'localhost');
      
      $pdo = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD);
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
      
      

      Enregistrez et fermez le fichier.

      Dans ce fichier, vous avez utilisé quatre constantes PHP pour vous connecter à la base de données MySQL que vous avez créée à l’Étape 1 :

      • DB_NAME : Cette constante contient le nom de la base de données test_company.

      • DB_USER : Cette variable contient le nom de l’utilisateur test_user.

      • DB_PASSWORD : Cette constante stocke le PASSWORD MySQL du compte test_user.

      • DB_HOST : Représente le serveur sur lequel réside la base de données. Dans ce cas, vous utilisez le serveur localhost.

      La ligne suivante de votre fichier initie un PHP Data Object (PDO) et se connecte à la base de données MySQL :

      ...
      $pdo = new PDO("mysql:host=" . DB_HOST . "; dbname=" . DB_NAME, DB_USER, DB_PASSWORD);
      ...
      

      Vers la fin du fichier, vous avez défini quelques attributs PDO :

      • ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION : cet attribut indique au PDO de lancer une exception qui peut être enregistrée à des fins de débogage.
      • ATTR_EMULATE_PREPARES, false : Cette option augmente la sécurité en demandant au moteur de base de données MySQL de faire le préparation au lieu de PDO.

      Vous allez inclure le fichier /var/www/html/config.php dans deux scripts PHP que vous créerez ensuite pour insérer et récupérer des enregistrements, respectivement.

      Tout d’abord, créez le script /var/www/html/insert_products.php PHP pour l’insertion des enregistrements dans le tableau products :

      • sudo nano /var/www/html/insert_products.php

      Ajoutez ensuite les informations suivantes dans le fichier /var/www/html/insert_products.php :

      /var/www/html/insert_products.php

      <?php
      
      require_once 'config.php';
      
      $products = [];
      
      $products[] = [
                    'product_name' => 'VIRTUAL SERVERS',
                    'price' => 5,
                    'product_image' => file_get_contents("https://i.imgur.com/VEIKbp0.png")
                    ];
      
      $products[] = [
                    'product_name' => 'MANAGED KUBERNETES',
                    'price' => 30,
                    'product_image' => file_get_contents("https://i.imgur.com/cCc9Gw9.png")
                    ];
      
      $products[] = [
                    'product_name' => 'MySQL DATABASES',
                    'price' => 15,
                    'product_image' => file_get_contents("https://i.imgur.com/UYcHkKD.png" )
                    ];
      
      $sql = "INSERT INTO products(product_name, price, product_image) VALUES (:product_name, :price, :product_image)";
      
      foreach ($products as $product) {
          $stmt = $pdo->prepare($sql);
          $stmt->execute($product);
      }
      
      echo "Records inserted successfully";
      

      Enregistrez et fermez le fichier.

      Dans le fichier, vous avez inclus le fichier config.php en haut. C’est le premier fichier que vous avez créé pour définir les variables de la base de données et vous connecter à la base de données. Le fichier initie également un objet PDO et le stocke dans une variable $pdo.

      Ensuite, vous avez créé un tableau des données des produits à insérer dans la base de données. Outre product_name et price, qui sont préparés respectivement sous forme de chaînes de caractères et de valeurs numériques, le script utilise la fonction intégrée file_get_contents de PHP pour lire les images d’une source externe et les transmettre sous forme de chaînes de caractères à la colonne product_image.

      Ensuite, vous avez préparé une instruction SQL et utilisé l’instruction foreach{...} de PHP pour insérer chaque produit dans la base de données.

      Pour exécuter le fichier /var/www/html/insert_products.php, exécutez-le dans la fenêtre de votre navigateur en utilisant l’URL suivante. N’oubliez pas de remplacer your-server-IP par l’adresse IP publique de votre serveur :

      http://your-server-IP/insert_products.php
      

      Après l’exécution du fichier, vous verrez un message de confirmation dans votre navigateur confirmant que les enregistrements ont été insérés dans la base de données.

      Un message de réussite montrant que les enregistrements ont été insérés dans la base de données

      Vous avez correctement inséré trois enregistrements contenant des images de produit dans la table products. Dans l’étape suivante, vous allez créer un script PHP pour récupérer ces enregistrements et les afficher dans votre navigateur.

      Étape 3 — Afficher les informations des produits à partir de la base de données MySQL

      Avec les informations et les images des produits dans la base de données, vous allez maintenant coder un autre script PHP qui interroge et affiche les informations des produits dans un tableau HTML sur votre navigateur.

      Pour créer le fichier, tapez ce qui suit :

      • sudo nano /var/www/html/display_products.php

      Entrez ensuite les informations suivantes dans le fichier :

      /var/www/html/display_products.php

      <html>
        <title>Using BLOB and MySQL</title>
        <body>
      
        <?php
      
        require_once 'config.php';
      
        $sql = "SELECT * FROM products";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        ?>
      
        <table border="1" align = 'center'> <caption>Products Database</caption>
          <tr>
            <th>Product Id</th>
            <th>Product Name</th>
            <th>Price</th>
            <th>Product Image</th>
          </tr>
      
        <?php
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            echo '<tr>';
            echo '<td>' . $row['product_id'] . '</td>';
            echo '<td>' . $row['product_name'] . '</td>';
            echo '<td>' . $row['price'] . '</td>';
            echo '<td>' .
            '<img src = "data:image/png;base64,' . base64_encode($row['product_image']) . '" width = "50px" height = "50px"/>'
            . '</td>';
            echo '</tr>';
        }
        ?>
      
        </table>
        </body>
      </html>
      

      Sauvegardez les modifications du fichier et fermez-le.

      Ici, vous avez de nouveau inclus le fichier config.php afin de vous connecter à la base de données. Ensuite, vous avez préparé et exécuté une instruction SQL en utilisant PDO pour récupérer tous les éléments du tableau products à l’aide de la commande SELECT * FROM products.

      Ensuite, vous avez créé un tableau HTML et l’avez rempli avec les données des produits en utilisant l’instruction PHP while() {...}. La ligne $row = $stmt->fetch(PDO::FETCH_ASSOC) interroge la base de données et stocke le résultat dans la variable $row sous la forme d’un tableau multidimensionnel, que vous avez ensuite affiché dans une colonne du tableau HTML en utilisant la syntaxe $row['column_name'].

      Les images de la colonne product_image sont jointes dans les balises <img src = "">. Vous avez utilisé les attributs width et height pour redimensionner les images à une taille plus petite qui peut tenir dans la colonne du tableau HTML.

      Afin de convertir en images les données détenues par le type de données BLOB, vous avez utilisé la fonction PHP base64_encode intégrée et la syntaxe suivante pour le schéma Data URI :

      data:media_type;base64, base_64_encoded_data
      

      Dans ce cas, l’image/png est le media_type et la chaîne codée en Base64 de la colonne product_image est la base_64_encoded_data.

      Ensuite, exécutez le fichier display_products.php dans un navigateur web en tapant l’adresse suivante :

      http://your-server-IP/display_products.php
      

      Après avoir exécuté le fichier display_products.php dans votre navigateur, vous verrez un tableau HTML avec une liste de produits et d’images associées.

      Liste des produits de la base de données MySQL

      Cela confirme que le script PHP pour la récupération des images de MySQL fonctionne comme prévu.

      Conclusion

      Dans ce guide, vous avez utilisé le type de données MySQL BLOB pour stocker et afficher des images avec PHP sur Ubuntu 18.04. Vous avez également vu les avantages fondamentaux du stockage des images dans une base de données par rapport au stockage dans un système de fichiers. Il s’agit notamment de la portabilité, de la sécurité et de la facilité de sauvegarde. Si vous créez une application telle qu’un portail d’étudiants ou une base de données d’employés qui nécessite de stocker ensemble des informations et des images connexes, alors cette technologie peut vous être d’une grande utilité.

      Pour plus d’informations sur les types de données pris en charge dans MySQL, suivez le guide des Types de données MySQL. Si vous êtes intéressé par d’autres contenus relatifs à MySQL et PHP, consultez les tutoriels suivants :



      Source link