Website-Suche

PHP 8.1 installieren und eine lokale Entwicklungsumgebung unter Ubuntu einrichten


Eine frühere Version dieses Tutorials wurde von alenaholligan geschrieben.

Einführung

PHP ist eine beliebte, quelloffene serverseitige Skriptsprache, die für die Webentwicklung entwickelt wurde und einen erheblichen Teil des Internets antreibt, von Blogs und E-Commerce-Seiten bis hin zu groß angelegten Anwendungen. Mit jeder neuen Veröffentlichung bietet PHP verbesserte Leistung, Sicherheit und moderne Entwicklungsfunktionen, um Entwicklern zu helfen, robuste und skalierbare Software zu erstellen.

PHP 8.1 ist eine stabile, langfristig unterstützte Version, die bedeutende Verbesserungen und neue Sprachfunktionen bietet und dabei die Zuverlässigkeit beibehält. Die Installation von PHP 8.1 auf Ubuntu stellt sicher, dass Ihre lokale Entwicklungsumgebung aktuell, sicher und mit weit verbreiteten Frameworks und Plattformen wie WordPress, Laravel und individuellen PHP-Anwendungen kompatibel ist.

Dieses Tutorial führt Sie durch die Installation von PHP 8.1 auf Ubuntu, die Konfiguration mit Apache oder Nginx, die Einrichtung wichtiger PHP-Erweiterungen und die Installation von Composer für die Verwaltung von Abhängigkeiten. Sie lernen auch, wie Sie Ihre Installation überprüfen und häufige Probleme beheben.

Stellen Sie Ihre PHP-Anwendungen von GitHub mit der App-Plattform von Linux-Console.net bereit. Lassen Sie Linux-Console.net sich um die Skalierung Ihrer App kümmern.

Wichtige Erkenntnisse

  • PHP 8.1 Installation auf Ubuntu 22.04: Ubuntu 22.04 LTS enthält PHP 8.1 in seinen Standardrepositories, sodass Sie eine stabile, langfristig unterstützte PHP-Version mit apt installieren können, ohne Drittanbieter-PPAs zu verwenden. Dies sorgt für planbare Updates, Sicherheitsupdates und Kompatibilität mit modernen PHP-Frameworks.

  • Wesentliche PHP-Erweiterungen für realistische Projekte: Die meisten produktionsreifen PHP-Anwendungen verlassen sich auf Erweiterungen wie mysql, curl, xml, mbstring, zip, gd und bcmath. Die frühzeitige Installation dieser Erweiterungen verhindert Laufzeitfehler und stellt die Kompatibilität mit Frameworks wie Laravel, Symfony und WordPress sicher.

  • Apache oder Nginx für die PHP-Entwicklung wählen: Apache kann PHP direkt mit mod_php ausführen, während Nginx PHP‑FPM für die Verarbeitung von Anfragen benötigt. Beide Ansätze funktionieren gut für die lokale Entwicklung, aber PHP‑FPM entspricht eher modernen Produktionsumgebungen und skaliert unter Last besser.

  • Composer als Grundlage moderner PHP-Workflows: Composer verwaltet Projektabhängigkeiten über composer.json und composer.lock und sorgt so für konsistente Builds auf verschiedenen Rechnern. Er ist unverzichtbar für die Installation von Frameworks, das Erstellen von Autoloadern und die Pflege zuverlässiger Versionsabhängigkeiten in kollaborativen PHP-Projekten.

  • PHP speziell für die Entwicklung konfigurieren: Entwicklungsumgebungen profitieren von ausführlicher Fehlermeldung, höheren Speicherlimits und längeren Ausführungszeiten. Das Anpassen dieser Einstellungen in php.ini hilft dabei, Fehler während der Entwicklung schnell zu erkennen, muss jedoch für den Produktionseinsatz immer wieder rückgängig gemacht werden.

  • Fehlerbehebung und Überprüfung sind Teil der Einrichtung: Die Überprüfung von PHP mit php -v, das Prüfen geladener Erweiterungen und das Durchsehen der Apache-, Nginx- oder PHP-FPM-Protokolle sind wichtige Schritte. Die meisten Einrichtungsprobleme entstehen durch fehlende Erweiterungen, Berechtigungen oder falsch konfigurierte Webserver-Direktiven.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

  • Ein lokaler Rechner oder virtueller Server mit Ubuntu (kompatibel mit Ubuntu 22.04 LTS und späteren Versionen)
  • Administrative (sudo) Rechte auf der Maschine
  • Eine aktive Internetverbindung
  • Grundlegende Vertrautheit mit der Kommandozeile

Wenn Sie einen neuen Ubuntu-Server einrichten, lesen Sie unseren Leitfaden zur ersten Servereinrichtung mit Ubuntu.

Schritt 1 — Einrichten von PHP 8.1

Sie werden Ihre Installation und Einrichtung über die Kommandozeile abschließen, was eine nicht-grafische Art ist, mit Ihrem Computer zu interagieren. Das heißt, anstatt auf Schaltflächen zu klicken, werden Sie Text eingeben und Rückmeldungen von Ihrem Computer ebenfalls in Textform erhalten.

Die Kommandozeile, auch als Shell oder Terminal bekannt, kann Ihnen helfen, viele der Aufgaben, die Sie täglich am Computer erledigen, zu ändern und zu automatisieren und ist ein wesentliches Werkzeug für Softwareentwickler. Es gibt viele Terminalbefehle zu lernen, die es Ihnen ermöglichen, leistungsfähigere Dinge zu tun. Der Artikel "Eine Einführung in das Linux-Terminal" kann Ihnen helfen, sich besser mit dem Terminal vertraut zu machen.

Hinweis: Wenn Sie neu bei Ubuntu sind, sollten Sie unsere Ubuntu-Dokumentation für weitere Anleitungen zur Systemverwaltung durchsehen.

Unter Ubuntu können Sie die Terminal-Anwendung finden, indem Sie auf das Ubuntu-Symbol in der oberen linken Ecke Ihres Bildschirms klicken und terminal in die Suchleiste eingeben. Klicken Sie auf das Symbol der Terminal-Anwendung, um sie zu öffnen. Alternativ können Sie gleichzeitig die Tasten STRG, ALT und T auf Ihrer Tastatur drücken, um die Terminal-Anwendung automatisch zu öffnen.

Hinweis: Auf Ubuntu 22.04 LTS ist PHP 8.1 in den Standard-Repositories verfügbar. Wenn Sie PHP auf Ubuntu 22.04 ohne Angabe einer Version installieren, wird standardmäßig PHP 8.1 installiert.

Wenn Sie mehrere PHP-Versionen verwalten oder eine andere Version installieren müssen, sollten Sie phpenv oder phpbrew zur Versionsverwaltung in Betracht ziehen.

Führen Sie die folgenden Befehle aus, um Ihre Liste verfügbarer Pakete zu aktualisieren, und installieren Sie dann PHP 8.1:

sudo apt update
sudo apt install --no-install-recommends php8.1

Das --no-install-recommends-Flag stellt sicher, dass andere Pakete wie der Apache-Webserver nicht installiert werden.

Überprüfen Sie Ihre PHP-Versionsinformationen mit folgendem Befehl:

php -v

Sie werden eine Ausgabe wie diese erhalten:

PHP 8.1.2-1ubuntu2.22 (cli) (built: Jul 15 2025 12:11:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.22, Copyright (c), by Zend Technologies

Dieses Setup wurde unter Ubuntu 22.04 LTS getestet, wobei PHP 8.1-Pakete aus den offiziellen Ubuntu-Repositories verwendet wurden.

Installieren Sie wichtige PHP-Erweiterungen für die Webentwicklung:

sudo apt install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath

Dieser Befehl installiert die folgenden Module:

  • php8.1-cli - Kommandointerpreter, nützlich zum Testen von PHP-Skripten über die Shell oder zum Ausführen allgemeiner Shell-Skripting-Aufgaben
  • php8.1-common - Dokumentation, Beispiele und häufig verwendete Module für PHP
  • php8.1-mysql - zum Arbeiten mit MySQL-Datenbanken
  • php8.1-zip - zum Arbeiten mit komprimierten Dateien
  • php8.1-gd - zur Arbeit mit Bildern
  • php8.1-mbstring - wird verwendet, um Nicht-ASCII-Zeichenketten zu verwalten
  • php8.1-curl - ermöglicht es Ihnen, HTTP-Anfragen in PHP zu stellen
  • php8.1-xml - zum Arbeiten mit XML-Daten
  • php8.1-bcmath - wird verwendet, wenn mit präzisen Gleitkommazahlen gearbeitet wird

PHP-Konfigurationsdateien werden in /etc/php/8.1/ gespeichert. Die Hauptkonfigurationsdatei ist php.ini, die je nach Einrichtung in verschiedenen Verzeichnissen liegen kann:

  • CLI-Konfiguration: /etc/php/8.1/cli/php.ini
  • Apache-Konfiguration: /etc/php/8.1/apache2/php.ini (wenn Apache installiert ist)
  • PHP-FPM-Konfiguration: /etc/php/8.1/fpm/php.ini (falls PHP-FPM installiert ist)

Installierte Erweiterungen überprüfen:

php -m

Dies listet alle geladenen PHP-Module auf. Wenn php -v eine andere Version als erwartet anzeigt, haben Sie möglicherweise mehrere PHP-Versionen installiert. Verwenden Sie php8.1 -v, um speziell PHP 8.1 zu überprüfen.

Sie haben PHP installiert und die Version überprüft, die Sie verwenden. Sie haben auch alle erforderlichen PHP-Module installiert und konnten die Module auflisten, die Sie geladen haben.

Schritt 2 — PHP mit Apache konfigurieren

Installieren Sie das Apache PHP-Modul:

sudo apt install libapache2-mod-php8.1

Aktivieren Sie das Modul und starten Sie Apache neu:

sudo a2enmod php8.1
sudo systemctl restart apache2

Verständnis von mod_php: Das mod_php-Modul bettet PHP direkt in den Apache-Prozess ein. Wenn Apache eine Anfrage für eine PHP-Datei erhält, verarbeitet es diese intern mit dem eingebetteten PHP-Interpreter. Dies unterscheidet sich von Nginx, das einen separaten PHP-FPM-Dienst benötigt. Der Befehl a2enmod erstellt einen symbolischen Link in /etc/apache2/mods-enabled/, um das Modul zu aktivieren.

Überprüfen Sie, ob Apache PHP korrekt verarbeitet, indem Sie eine Testdatei im Dokumentenstamm von Apache erstellen (normalerweise /var/www/html):

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Besuchen Sie http://localhost/info.php in Ihrem Browser. Sie sollten die PHP-Konfigurationsseite sehen. Entfernen Sie diese Datei nach dem Testen aus Sicherheitsgründen:

sudo rm /var/www/html/info.php

Fehlerbehebung bei Apache-PHP-Problemen

Wenn Apache nach der Installation von mod_php nicht startet:

Überprüfen Sie das Fehlerprotokoll von Apache:

sudo tail -20 /var/log/apache2/error.log

Häufige Probleme sind:

  • Konfliktierende PHP-Module: Wenn Sie mehrere PHP-Versionen haben, deaktivieren Sie zunächst andere PHP-Module mit sudo a2dismod php7.4 (falls vorhanden)
  • Syntaxfehler in der Apache-Konfiguration: Führen Sie sudo apache2ctl configtest aus, um dies zu überprüfen

Wenn Sie localhost besuchen und „Es funktioniert!“ sehen, aber PHP-Dateien als reiner Text angezeigt werden:

Das bedeutet, dass Apache PHP nicht verarbeitet. Überprüfen Sie:

  1. Überprüfen Sie, ob das Modul aktiviert ist:
apache2ctl -M | grep php
  1. Wenn nichts angezeigt wird, ist das Modul nicht geladen. Aktivieren Sie es erneut:
sudo a2enmod php8.1
sudo systemctl restart apache2
  1. Überprüfen Sie, ob Ihre PHP-Datei die richtige Erweiterung (.php) hat und PHP-Code enthält

Wenn Sie einen 403 Forbidden-Fehler erhalten:

Überprüfen Sie die Dateiberechtigungen:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Sicherheitshinweis: Die Funktion phpinfo() gibt detaillierte Systeminformationen preis. Dateien, die phpinfo() enthalten, sollten niemals auf Produktivservern verbleiben.

Apache Virtual-Host-Konfiguration

Für die lokale Entwicklung mit benutzerdefinierten Domains erstellen Sie einen virtuellen Host:

sudo nano /etc/apache2/sites-available/example.local.conf

Fügen Sie diese Konfiguration hinzu:

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot /var/www/example.local
    <Directory /var/www/example.local>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  • ServerName: Der Domainname für diesen virtuellen Host
  • DocumentRoot: Wo sich Ihre PHP-Dateien befinden
  • AllowOverride All: Ermöglicht es .htaccess-Dateien, Apache-Einstellungen zu überschreiben (wichtig für Frameworks wie Laravel)
  • Require all granted: Ermöglicht den Zugriff auf das Verzeichnis

Erstellen Sie das Verzeichnis, aktivieren Sie die Website und starten Sie Apache neu:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo a2ensite example.local.conf
sudo systemctl restart apache2

Fügen Sie die Domain für den lokalen Zugriff zu Ihrer /etc/hosts-Datei hinzu:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

Die Wahl zwischen Apache und Nginx

Bevor Sie Ihren Webserver konfigurieren, überlegen Sie, welcher am besten zu Ihren Bedürfnissen passt:

FunktionApache mit mod_phpNginx mit PHP-FPM
PHP-VerarbeitungIn den Apache-Prozess eingebettetGetrennter PHP-FPM-Dienst
SpeicherverbrauchHöher (PHP in jedem Apache-Prozess)Niedriger (separater Prozesspool)
LeistungGut für niedrigen bis mittleren VerkehrBesser für hohen Datenverkehr und gleichzeitige Anfragen
KonfigurationEinfachere ErsteinrichtungKomplexer (erfordert PHP-FPM-Konfiguration)
.htaccess-UnterstützungNative-UnterstützungNicht unterstützt (muss in Serverblöcken konfiguriert werden)
Produktive NutzungHäufig beim Shared HostingIn modernen Implementierungen verbreitet
LernkurveEinfacher für AnfängerSteilere Lernkurve
RessourceneffizienzWeniger effizient bei hoher BelastungUnter hoher Last effizienter

Wann man Apache wählen sollte:

  • Sie sind mit Apache vertraut oder benötigen .htaccess-Unterstützung
  • Ein einfaches Entwicklungsumfeld einrichten
  • Arbeiten mit Frameworks, die stark auf .htaccess angewiesen sind (einige WordPress-Setups)
  • Sie bevorzugen eine einfachere Anfangskonfiguration

Wann man Nginx wählen sollte:

  • Sie benötigen eine bessere Leistung bei hoher Auslastung
  • Sie möchten moderne Produktionsumgebungen spiegeln
  • Sie entwickeln Anwendungen, die skalierbar sind
  • Du bevorzugst eine modernere Architektur

Beide funktionieren gleichermaßen gut für die lokale Entwicklung. Die Wahl hängt oft von persönlichen Vorlieben oder der bestehenden Infrastruktur ab.

Schritt 3 — PHP mit Nginx konfigurieren

PHP-FPM (FastCGI Process Manager) installieren:

sudo apt install php8.1-fpm

PHP-FPM starten und aktivieren:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

Verständnis von PHP-FPM und FastCGI: Im Gegensatz zu Apaches mod_php verarbeitet Nginx PHP nicht direkt. PHP-FPM (FastCGI Process Manager) läuft als eigener Dienst, mit dem Nginx über das FastCGI-Protokoll kommuniziert. FastCGI ist ein binäres Protokoll zur Schnittstelle zwischen Programmen und Webservern – es ist schneller als traditionelles CGI, da Prozesse zwischen den Anfragen am Leben bleiben.

Wenn Nginx eine Anfrage für eine PHP-Datei erhält, leitet es die Anfrage an PHP-FPM über einen Unix-Socket (oder eine TCP-Verbindung) weiter. PHP-FPM verarbeitet den PHP-Code und gibt das Ergebnis an Nginx zurück, das es dann an den Client sendet. Diese Trennung ermöglicht es PHP-FPM, seinen eigenen Prozess-Pool zu verwalten, was die Leistung und das Ressourcenmanagement verbessert.

Nginx-Serverblock-Konfiguration

Erstellen Sie eine Serverblock-Konfiguration:

sudo nano /etc/nginx/sites-available/example.local

Fügen Sie diese Konfiguration hinzu:

server {
    listen 80;
    server_name example.local;
    root /var/www/example.local;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Konfiguration erklärt:

  • root: Verzeichnis, in dem sich Ihre PHP-Dateien befinden
  • location ~ \.php$: Entspricht allen Anfragen, die auf .php enden, unter Verwendung von Regex
  • include snippets/fastcgi-php.conf: Enthält Nginx’ Standard-FastCGI-Konfiguration (setzt SCRIPT_FILENAME und andere erforderliche Variablen)
  • fastcgi_pass unix:/var/run/php/php8.1-fpm.sock: Der Unix-Socket, auf dem PHP-FPM lauscht. So kommuniziert Nginx mit PHP-FPM. Der Socket-Pfad ist in /etc/php/8.1/fpm/pool.d/www.conf definiert.

Aktivieren Sie die Website und testen Sie die Konfiguration:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo ln -s /etc/nginx/sites-available/example.local /etc/nginx/sites-enabled/
sudo nginx -t

Wenn der Test bestanden wird, Nginx neu starten:

sudo systemctl restart nginx

Fügen Sie die Domain zu /etc/hosts hinzu:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

Erstellen Sie eine Test-PHP-Datei:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.local/info.php

Besuchen Sie http://example.local/info.php. Sie sollten die PHP-Konfigurationsseite sehen. Entfernen Sie die Testdatei nach der Überprüfung:

sudo rm /var/www/example.local/info.php

Fehlerbehebung bei Nginx-PHP-Problemen

Wenn Sie den Fehler „502 Bad Gateway“ erhalten:

Das bedeutet, dass Nginx nicht mit PHP-FPM kommunizieren kann. Überprüfen Sie:

  1. Überprüfen Sie, ob PHP-FPM läuft:
sudo systemctl status php8.1-fpm
  1. Überprüfen Sie, ob der Socket-Pfad korrekt ist. Der Speicherort des Sockets ist in /etc/php/8.1/fpm/pool.d/www.conf definiert:
grep listen /etc/php/8.1/fpm/pool.d/www.conf

Sie sollten etwas wie listen=/run/php/php8.1-fpm.sock sehen. Der Pfad in Ihrer Nginx-Konfiguration muss genau übereinstimmen. Beachten Sie, dass /var/run oft ein Symlink zu /run ist, sodass beide Pfade funktionieren.

  1. Überprüfen Sie die Dateiberechtigungen der Socket-Datei:
ls -la /var/run/php/php8.1-fpm.sock

Die Socket-Datei sollte dem Benutzer www-data oder dem Benutzer, unter dem Nginx läuft, gehören. Wenn die Berechtigungen falsch sind:

sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock
  1. Überprüfen Sie das Nginx-Fehlerprotokoll:
sudo tail -20 /var/log/nginx/error.log

Du könntest Fehler wie folgende sehen:

connect() to unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory)

Dies zeigt an, dass der Socket-Pfad falsch ist oder PHP-FPM nicht läuft.

Wenn PHP-Dateien heruntergeladen werden, anstatt ausgeführt zu werden:

Das bedeutet, dass Nginx PHP-Dateien nicht an PHP-FPM weiterleitet. Überprüfen Sie:

  • Der Standort ~ \.php$ Block existiert in deiner Serverkonfiguration
  • Die fastcgi_pass-Direktive zeigt auf den richtigen Socket
  • Sie haben Nginx nach den Änderungen neu gestartet

Wenn Sie „Datei nicht gefunden“-Fehler erhalten:

Überprüfen Sie, dass snippets/fastcgi-php.conf existiert:

ls -la /etc/nginx/snippets/fastcgi-php.conf

Diese Datei setzt SCRIPT_FILENAME, was PHP-FPM mitteilt, welche Datei ausgeführt werden soll. Ohne diese Information weiß PHP-FPM nicht, welche Datei verarbeitet werden soll.

Schritt 4 — PHP für die Entwicklung konfigurieren

Konfigurieren Sie PHP für die Entwicklung, indem Sie die Fehlerberichterstattung, Anzeigeeinstellungen und Speicherlimits in php.ini anpassen. Diese Einstellungen unterscheiden sich von den Produktionskonfigurationen.

PHP verwendet separate Konfigurationsdateien für die CLI (Befehlszeile) und die Nutzung des Webservers. Bearbeiten Sie die entsprechende Datei:

Für die CLI (beim Ausführen von PHP über das Terminal):

sudo nano /etc/php/8.1/cli/php.ini

Für Webserver (Apache oder Nginx mit PHP-FPM):

# For Apache
sudo nano /etc/php/8.1/apache2/php.ini

# For PHP-FPM (Nginx)
sudo nano /etc/php/8.1/fpm/php.ini

Hinweis: Wenn Sie sowohl die CLI als auch den Webserver verwenden, müssen Sie beide Dateien separat konfigurieren. Änderungen an cli/php.ini wirken sich nicht auf Webanfragen aus, und Änderungen an apache2/php.ini oder fpm/php.ini wirken sich nicht auf CLI-Skripte aus.

Wichtige Entwicklungseinstellungen

Finden Sie diese Einstellungen und aktualisieren Sie sie in Ihrer php.ini-Datei:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = America/New_York

Was jede Einstellung bewirkt:

  • display_errors=On: Zeigt PHP-Fehler direkt im Browser an (hilfreich beim Debuggen, gefährlich in der Produktion)
  • display_startup_errors=On: Zeigt Fehler an, die beim Start von PHP auftreten
  • error_reporting=E_ALL: Meldet alle Arten von Fehlern (Warnungen, Hinweise usw.)
  • log_errors=On: Schreibt Fehler in eine Protokolldatei
  • error_log: Wo PHP Fehlerprotokolle schreibt
  • memory_limit=256M: Maximale Speichermenge, die ein Skript verwenden kann (erhöhen Sie dies, wenn Sie „Memory exhausted“-Fehler erhalten)
  • upload_max_filesize=64M: Maximale Größe für hochgeladene Dateien
  • post_max_size=64M: Maximale Größe für POST-Daten (muss größer als upload_max_filesize sein)
  • max_execution_time=300: Maximale Zeit, die ein Skript laufen darf (in Sekunden)
  • date.timezone: Legt die Standardzeitzone fest (verwenden Sie Ihre lokale Zeitzone: Asia/Kolkata, Europe/London, UTC usw.)

Produktionswarnung: Verwenden Sie diese Entwicklungseinstellungen niemals in der Produktion. Stellen Sie immer display_errors=Off ein und verwenden Sie geeignete Fehlermeldeeinstellungen auf Live-Servern.

Starten Sie nach den Änderungen Ihren Webserver neu:

# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm

Überprüfung Ihrer Konfiguration

Überprüfen Sie, ob Ihre Änderungen wirksam wurden:

# For CLI
php -i | grep display_errors

# For web server (create a test file)
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php

Rufen Sie die Testdatei in Ihrem Browser auf und suchen Sie nach display_errors. Es sollte On angezeigt werden. Entfernen Sie die Testdatei nach der Überprüfung.

Wenn Ihre Änderungen nicht angezeigt werden:

  1. Stellen Sie sicher, dass Sie die richtige php.ini-Datei bearbeitet haben (CLI vs Webserver)
  2. Überprüfen Sie die Einstellungsnamen auf Tippfehler (sie sind groß-/kleinschreibungsempfindlich)
  3. Starten Sie Ihren Webserver nach Änderungen neu
  4. Einige Einstellungen können durch .htaccess (Apache) oder php.ini in Ihrem Projektverzeichnis überschrieben werden

Du könntest jetzt sofort anfangen, PHP zu verwenden, aber du wirst wahrscheinlich verschiedene Bibliotheken nutzen wollen, um PHP-Anwendungen schnell zu erstellen. Bevor du deine PHP-Umgebung testest, richte zuerst einen Abhängigkeitsmanager für deine Projekte ein.

Schritt 5 — Composer für das Abhängigkeitsmanagement einrichten (optional)

Bibliotheken sind eine Sammlung von Code, der Ihnen dabei helfen kann, häufige Probleme zu lösen, ohne alles selbst schreiben zu müssen. Da es viele Bibliotheken gibt, hilft Ihnen die Verwendung eines Abhängigkeitsmanagers dabei, mehrere Bibliotheken zu verwalten, während Sie mehr Erfahrung im Schreiben von PHP sammeln.

Composer ist ein Werkzeug zur Verwaltung von Abhängigkeiten in PHP. Es ermöglicht Ihnen, die Bibliotheken, von denen Ihr Projekt abhängt, zu deklarieren und übernimmt die Installation und Aktualisierung dieser Pakete.

Obwohl ähnlich, ist Composer kein Paketmanager im gleichen Sinne wie yum oder apt. Er kümmert sich um „Pakete“ oder Bibliotheken, verwaltet diese jedoch projektbezogen und installiert sie in einem Verzeichnis (z. B. vendor) innerhalb Ihres Projekts. Standardmäßig installiert er nichts global. Daher ist er ein Abhängigkeitsmanager. Er unterstützt jedoch aus Bequemlichkeitsgründen ein globales Projekt über den Befehl global.

Diese Idee ist nicht neu, und Composer ist stark von Node’s npm und Ruby’s bundler inspiriert.

Angenommen:

  • Sie haben ein Projekt, das von mehreren Bibliotheken abhängt.
  • Einige dieser Bibliotheken hängen von anderen Bibliotheken ab.

Komponist:

  • Ermöglicht es Ihnen, die Bibliotheken anzugeben, von denen Sie abhängen.
  • Findet heraus, welche Versionen welcher Pakete installiert werden können und müssen, und installiert sie, indem sie in Ihr Projekt heruntergeladen werden.
  • Ermöglicht Ihnen, alle Ihre Abhängigkeiten mit einem einzigen Befehl zu aktualisieren.
  • Ermöglicht es Ihnen, das Kapitel zur Grundlegenden Nutzung für weitere Details zum Deklarieren von Abhängigkeiten zu sehen.

Laden Sie den Composer-Installer herunter:

curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

Überprüfen Sie die Integrität des Installationsprogramms, indem Sie seinen SHA-384-Hash prüfen. Holen Sie sich den neuesten Hash:

HASH=$(curl -sS https://composer.github.io/installer.sig)

Überprüfen Sie, ob der Hash übereinstimmt:

php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"

Du solltest sehen:

Installer verified

Wenn Sie Installer corrupt sehen, war der Download unvollständig oder wurde manipuliert. Laden Sie den Installer erneut herunter und überprüfen Sie den Hash. Wenn es immer noch fehlschlägt, überprüfen Sie Ihre Internetverbindung oder versuchen Sie, von einem anderen Netzwerk herunterzuladen.

Installiere Composer global:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

Du erhältst eine Ausgabe, die ungefähr so aussieht:

All settings correct for using Composer
Downloading...

Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Testen Sie Ihre Installation:

composer

Sie werden eine Ausgabe wie die folgende erhalten:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.5 2022-04-13 16:43:00

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display help for the given command. When no command is given display help for the list command
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi|--no-ansi           Force (or disable --no-ansi) ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
      --no-scripts               Skips the execution of all scripts defined in composer.json file.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
      --no-cache                 Prevent use of the cache
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .

Dies bestätigt, dass Composer erfolgreich auf Ihrem System installiert wurde und systemweit verfügbar ist.

Hinweis: Wenn Sie lieber separate Composer-Programme für jedes Projekt, das Sie auf Ihrem Server hosten, verwenden möchten, können Sie es lokal, pro Projekt, installieren. Diese Methode ist auch nützlich, wenn Ihr Systembenutzer keine Berechtigung hat, Software systemweit zu installieren.

Um dies zu tun, verwenden Sie den Befehl php /tmp/composer-setup.php ohne Argumente. Dieser Befehl erstellt eine composer.phar-Datei in Ihrem aktuellen Verzeichnis, die Sie mit php composer.phar ausführen können.

Schritt 6 — Verwendung von Composer in einem PHP-Projekt

Als letzten Schritt können Sie optional Ihr Projekt mit composer init initialisieren. Dadurch wird die composer.json-Datei erstellt, die Ihre Projektabhängigkeiten verwaltet. Die Initialisierung des Projekts ermöglicht es Ihnen außerdem, Projektdetails wie Autor und Lizenz festzulegen und die Autoload-Funktionalität von Composer zu nutzen. Sie können die Abhängigkeiten jetzt definieren oder später hinzufügen.

Erstellen Sie ein Projektverzeichnis und initialisieren Sie Composer:

cd ~
mkdir example-project
cd example-project
composer init

Wenn Sie diesen Befehl ausführen, wird der Einrichtungsassistent gestartet. Die Angaben, die Sie im Assistenten machen, können später aktualisiert werden, sodass Sie die Standardwerte beibehalten und einfach ENTER drücken können. Wenn Sie noch nicht bereit sind, Abhängigkeiten zu installieren, können Sie nein wählen. Geben Sie Ihre Daten bei jeder Eingabeaufforderung ein:

                                            
  Welcome to the Composer config generator  
                                            


This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [sammy/example-project]:  sammy/project1
Description []:
Author [n to skip]: Sammy <sammy@linux-console.net>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: 

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n

{
    "name": "sammy/project1",
    "type": "project",
    "authors": [
        {
            "name": "Sammy",
            "email": "sammy@linux-console.net"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes

Bevor Sie die Erstellung bestätigen, sehen Sie ein Beispiel der composer.json-Datei, die der Assistent erstellen wird. Wenn alles gut aussieht, können Sie die Standardauswahl ja bestätigen. Wenn Sie von vorne beginnen müssen, wählen Sie nein.

Wenn Sie zum ersten Mal eine Abhängigkeit definieren, erstellt Composer einen vendor-Ordner. Alle Abhängigkeiten werden in diesem vendor-Ordner installiert. Composer erstellt außerdem eine composer.lock-Datei. Diese Datei gibt die genaue Version jeder Abhängigkeit und Unterabhängigkeit an, die in Ihrem Projekt verwendet wird. Dies stellt sicher, dass auf jedem Rechner, auf dem Ihr Programm ausgeführt wird, genau dieselbe Version jedes Pakets verwendet wird.

Hinweis: Der vendor-Ordner sollte niemals in Ihrem Versionskontrollsystem (VCS) gespeichert werden. Der vendor-Ordner enthält nur Pakete, die Sie von anderen Anbietern installiert haben. Diese einzelnen Anbieter pflegen ihren eigenen Code in ihren eigenen Versionskontrollsystemen. Sie sollten nur den von Ihnen geschriebenen Code verfolgen. Anstatt den vendor-Ordner zu committen, müssen Sie nur Ihre composer.json- und composer.lock-Dateien committen. Mehr darüber, wie man bestimmte Dateien ignoriert, erfahren Sie in Wie man Git verwendet: Ein Referenzhandbuch.

Jetzt, da Sie PHP installiert haben und eine Möglichkeit, Ihre Projektabhängigkeiten mit Composer zu verwalten, sind Sie bereit, Ihre Umgebung zu testen.

Schritt 7 — Testen der PHP-Umgebung

Erstellen und führen Sie ein einfaches PHP-Skript aus, um Ihre Installation zu testen:

nano hello.php

Fügen Sie den folgenden PHP-Code hinzu:

<?php
echo 'Hello World!';
?>

Speichern Sie die Datei und schließen Sie sie (drücken Sie CTRL+X, dann Y und anschließend ENTER). Führen Sie das Skript aus:

php hello.php

Wenn das PHP richtig verarbeitet wird, sehen Sie nur die Zeichen innerhalb der Anführungszeichen:

Hello World!

PHP hat das Skript erfolgreich verarbeitet, was bedeutet, dass Ihre PHP-Umgebung erfolgreich installiert ist und Sie bereit sind, Ihre Programmierreise fortzusetzen.

Schritt 8 — Einrichten von praxisnahen PHP-Projekten

Moderne PHP-Frameworks wie Laravel, Symfony und WordPress erfordern bestimmte PHP-Erweiterungen und Composer. Installieren Sie das Framework mit Composer oder dem Installer des Frameworks und konfigurieren Sie dann Ihren Webserver so, dass er auf das öffentliche Verzeichnis des Projekts zeigt.

Laravel einrichten

Installiere Laravel mit Composer:

composer create-project laravel/laravel my-laravel-app
cd my-laravel-app

Dieser Befehl lädt Laravel und alle seine Abhängigkeiten herunter. Der Vorgang kann einige Minuten dauern.

Laravel erfordert diese PHP-Erweiterungen (in Schritt 1 installiert):

  • php8.1-mbstring - Verarbeitung von Multibyte-Zeichenketten
  • php8.1-xml - XML-Verarbeitung
  • php8.1-curl - HTTP-Anfragen
  • php8.1-zip - Archivverwaltung
  • php8.1-bcmath - Mathematik mit beliebiger Genauigkeit

Wenn Laravel „mbstring fehlt“ sagt, obwohl Sie es installiert haben:

Dies bedeutet normalerweise, dass die Erweiterung installiert, aber nicht geladen ist. Überprüfen Sie:

  1. Überprüfen Sie, ob die Erweiterung installiert ist:
php -m | grep mbstring
  1. Wenn es fehlt, installieren Sie es:
sudo apt install php8.1-mbstring
  1. Wenn es installiert ist, aber nicht angezeigt wird, starten Sie Ihren Webserver neu:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  1. Überprüfen Sie, welche php.ini-Datei verwendet wird. Der Installer von Laravel nutzt CLI-PHP, also prüfen Sie:
php --ini

Stellen Sie sicher, dass die Erweiterung in der CLI-php.ini-Datei aktiviert ist.

Überprüfung der Laravel-Installation:

Nachdem die Installation abgeschlossen ist, starten Sie den Entwicklungsserver von Laravel:

php artisan serve

Du solltest sehen:

INFO  Server running on [http://127.0.0.1:8000]

Besuchen Sie http://localhost:8000 in Ihrem Browser. Sie sollten die Willkommensseite von Laravel sehen.

Für produktionsähnliche Setups mit Apache oder Nginx:

Konfigurieren Sie Ihren Webserver so, dass er auf das public-Verzeichnis zeigt (nicht auf das Stammverzeichnis des Projekts). Die public/index.php von Laravel ist der Einstiegspunkt für alle Anfragen.

Hinweis: Erfahren Sie mehr über Laravel in unserem Tutorial zum Thema Wie man Laravel auf Ubuntu installiert.

WordPress einrichten

WordPress herunterladen und entpacken:

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo chown -R www-data:www-data /var/www/wordpress

WordPress benötigt eine MySQL- oder MariaDB-Datenbank. Installieren Sie MySQL bei Bedarf:

sudo apt install mysql-server
sudo mysql_secure_installation

Das mysql_secure_installation-Skript wird Sie auffordern:

  • Ein Root-Passwort festlegen
  • Anonyme Benutzer entfernen
  • Remote-Root-Login nicht erlauben
  • Testdatenbank entfernen
  • Berechtigungstabellen neu laden

Erstelle eine Datenbank und einen Benutzer für WordPress:

sudo mysql -u root -p

Im MySQL-Prompt:

CREATE DATABASE wordpress_db;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Ersetzen Sie secure_password durch ein sicheres Passwort. WordPress wird diese Anmeldedaten verwenden, um eine Verbindung zur Datenbank herzustellen.

Wenn WordPress keine Verbindung zur Datenbank herstellen kann:

  1. Überprüfen, ob MySQL läuft:
sudo systemctl status mysql
  1. Testen Sie die Datenbankverbindung:
mysql -u wpuser -p wordpress_db

Wenn dies fehlschlägt, überprüfen Sie:

  • Der Benutzername und das Passwort sind korrekt
  • Die Datenbank existiert: SHOW DATABASES;
  • Der Benutzer hat die Berechtigungen: SHOW GRANTS FOR 'wpuser'@'localhost';
  1. Überprüfen Sie, ob die MySQL-Erweiterung von PHP installiert ist:
php -m | grep mysql

Falls nicht vorhanden, installieren Sie es:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx

Abschluss der WordPress-Installation:

Konfigurieren Sie Ihren Webserver so, dass er auf /var/www/wordpress zeigt (siehe Schritt 2 für Apache oder Schritt 3 für Nginx). Besuchen Sie die Website in Ihrem Browser. WordPress wird Sie auffordern:

  1. Wählen Sie Ihre Sprache
  2. Geben Sie die Datenbankanmeldedaten ein (verwenden Sie die Datenbank, den Benutzernamen und das Passwort, die Sie erstellt haben)
  3. Installation abschließen

Hinweis: Für eine detaillierte WordPress-Installation siehe Wie man WordPress mit LAMP auf Ubuntu installiert.

Symfony einrichten

Installiere Symfony mit Composer:

composer create-project symfony/website-skeleton my-symfony-app
cd my-symfony-app

Symfony benötigt dieselben Erweiterungen wie Laravel. Starten Sie den Entwicklungsserver:

symfony server:start

Oder verwenden Sie den eingebauten Server von PHP:

php -S localhost:8000 -t public

Wenn die Symfony-Installation aufgrund von Erweiterungsfehlern fehlschlägt:

Überprüfen Sie, ob alle erforderlichen Erweiterungen installiert und geladen sind:

php -m | grep -E 'mbstring|xml|curl|zip|bcmath'

Wenn welche fehlen, installieren Sie sie und starten Sie Ihren Webserver neu.

Schritt 9 — Beste Praktiken für die lokale Entwicklung

Sichern Sie Ihre lokale Umgebung, verwenden Sie Versionskontrolle, konfigurieren Sie die richtigen Dateiberechtigungen und richten Sie umgebungsspezifische Konfigurationen ein. Diese Praktiken verhindern Sicherheitsprobleme und erleichtern die Entwicklung.

Sicherheitsaspekte

Auch in der lokalen Entwicklung sollten die besten Sicherheitspraktiken befolgt werden:

  1. Gefährliche PHP-Funktionen in der Produktionsumgebung deaktivieren: Funktionen wie exec(), system() und shell_exec() sollten in Produktions-php.ini-Dateien eingeschränkt werden.

  2. Umgebungsvariablen verwenden: Speichern Sie sensible Konfigurationen in .env-Dateien (diese niemals in die Versionskontrolle einchecken). Laravel und Symfony unterstützen dies nativ.

  3. Richtige Dateiberechtigungen setzen: Webserver-Dateien sollten für den Webserver-Benutzer lesbar, aber nicht beschreibbar sein:

sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
sudo find /var/www/your-project -type f -exec chmod 644 {} \;

Warum diese Berechtigungen wichtig sind: Verzeichnisse benötigen 755 (lesen, schreiben, ausführen für den Besitzer; lesen und ausführen für andere), damit der Webserver sie durchlaufen kann. Dateien benötigen 644 (lesen und schreiben für den Besitzer; nur lesen für andere), damit der Webserver sie lesen, aber nicht ändern kann. Dies verhindert, dass bösartige Skripte Ihre Dateien überschreiben.

Versionskontrollintegration

Verwenden Sie immer Versionskontrolle für Ihre PHP-Projekte. Initialisieren Sie Git in Ihrem Projektverzeichnis:

cd /var/www/your-project
git init

Erstellen Sie eine .gitignore-Datei, um unnötige Dateien auszuschließen:

/vendor/
/node_modules/
.env
.DS_Store
*.log

Leistungsoptimierung

Für eine bessere Leistung in der lokalen Entwicklung:

  • OPcache aktivieren: OPcache ist in PHP 8.1 enthalten und verbessert die Leistung, indem kompilierter PHP-Code zwischengespeichert wird.

  • Verwenden Sie die Optimierung des Composer-Autoloaders:

composer install --optimize-autoloader --no-dev
  • Konfigurieren Sie PHP-FPM-Pools, um eine bessere Ressourcennutzung zu erreichen, wenn Sie Nginx verwenden.

Schritt 10 — Fehlerbehebung bei häufigen Problemen

Häufige PHP-Installationsprobleme umfassen fehlende Erweiterungen, falsche Dateiberechtigungen, Fehler in der Webserver-Konfiguration und Versionskonflikte. Die meisten Probleme lassen sich lösen, indem man die Installation der Erweiterungen überprüft, die Dateiberechtigungen kontrolliert und die Webserver-Logs durchgeht.

PHP-Erweiterungen werden nicht geladen

Wenn php -m eine gerade installierte Erweiterung nicht anzeigt:

  • Überprüfen Sie, ob es tatsächlich installiert ist:
dpkg -l | grep php8.1-extension_name
  • Überprüfen Sie, ob die Erweiterungsdatei existiert:
ls /usr/lib/php/*/extension_name.so
  • Vergewissern Sie sich, dass es in php.ini aktiviert ist. Einige Erweiterungen müssen explizit aktiviert werden:
grep -i extension_name /etc/php/8.1/*/php.ini
  • Starten Sie Ihren Webserver neu:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  • Überprüfen Sie, welche php.ini verwendet wird:
php --ini

Stellen Sie sicher, dass Sie die richtige php.ini-Datei überprüfen (CLI vs. Webserver).

Wenn die Erweiterung immer noch nicht angezeigt wird:

  • Einige Erweiterungen erfordern zusätzliche Systembibliotheken. Überprüfen Sie die Dokumentation der Erweiterung.
  • Überprüfen Sie, ob Sie die richtige Version installiert haben (php8.1-Erweiterung, nicht php8.0-Erweiterung)
  • Überprüfen Sie auf widersprüchliche PHP-Versionen, die möglicherweise stören

500 Interner Serverfehler

Ein 500-Fehler bedeutet, dass der Server auf einen Fehler gestoßen ist, aber keine Details anzeigen kann. Überprüfen Sie die Fehlerprotokolle:

# Apache
sudo tail -20 /var/log/apache2/error.log

# Nginx
sudo tail -20 /var/log/nginx/error.log

# PHP-FPM
sudo tail -20 /var/log/php8.1-fpm.log

Häufige Ursachen und Lösungen:

  1. Falsche Dateiberechtigungen: PHP-Dateien müssen vom Webserver-Benutzer lesbar sein
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type f -exec chmod 644 {} \;
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
  1. Fehlende PHP-Erweiterungen: Überprüfen Sie das Fehlerprotokoll auf Meldungen wie „Aufruf einer undefinierten Funktion“. Installieren Sie die fehlende Erweiterung und starten Sie den Webserver neu.

  2. Syntaxfehler in PHP-Dateien: Das Fehlprotokoll zeigt die Datei und die Zeilennummer an. Häufige Probleme:

    • Fehlende Semikolons
    • Nicht geschlossene Klammern oder Anführungszeichen
    • Verwendung undefinierter Funktionen oder Klassen
  3. Falsche Webserver-Konfiguration:

    • Apache: Überprüfen der Konfiguration der virtuellen Hosts, Laden der Module
    • Nginx: Überprüfen Sie den PHP-FPM-Socket-Pfad, die FastCGI-Konfiguration
  4. PHP-Speicherlimit überschritten: Erhöhen Sie memory_limit in php.ini, wenn Sie Fehler wie „Zugelassene Speichermenge erschöpft“ sehen

PHP-Versionkonflikte

Wenn php -v eine andere Version als erwartet anzeigt, sind mehrere PHP-Versionen installiert.

Überprüfen Sie, welche Versionen installiert sind:

dpkg -l | grep php | grep -E 'php[0-9]'

Verwenden Sie explizit die richtige Version:

php8.1 -v
php8.1 -m

Aktualisieren Sie Ihren Webserver auf PHP 8.1:

Für Apache andere PHP-Module deaktivieren und PHP 8.1 aktivieren:

sudo a2dismod php7.4 php8.0  # if they exist
sudo a2enmod php8.1
sudo systemctl restart apache2

Für PHP-FPM andere Versionen stoppen und PHP 8.1 starten:

sudo systemctl stop php7.4-fpm php8.0-fpm  # if they exist
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

PHP 8.1 als Standard-CLI-Version festlegen:

sudo update-alternatives --set php /usr/bin/php8.1

Speicherprobleme des Komponisten

Wenn Composer keinen Speicher mehr hat, erscheint eine Fehlermeldung wie:

Fatal error: Allowed memory size of 134217728 bytes exhausted

Behebe es, indem du Composer mit mehr Arbeitsspeicher ausführst:

php -d memory_limit=512M /usr/local/bin/composer install

Oder erhöhen Sie das PHP-Speicherlimit in php.ini:

memory_limit = 512M

Wenn die Composer-Installation aufgrund einer Hash-Fehlanpassung fehlschlägt:

Die Hash-Überprüfung kann fehlschlagen, wenn:

  • Der Installer wurde seit Ihrem Download aktualisiert (laden Sie ihn erneut herunter, um den neuesten Hash zu erhalten)
  • Ihr Download war beschädigt (versuchen Sie es erneut herunterzuladen)
  • Sie sind hinter einem Proxy, der Dateien ändert (überprüfen Sie Ihre Netzwerkeinstellungen)

Datenbankverbindungsprobleme

Wenn Ihre PHP-Anwendung keine Verbindung zu MySQL/MariaDB herstellen kann, könnten Fehlermeldungen wie die folgenden angezeigt werden:

SQLSTATE[HY000] [2002] No such file or directory

oder

Access denied for user 'username'@'localhost'

Fehlerbehebungsschritte:

  1. Überprüfen Sie, ob der Datenbankdienst läuft:
sudo systemctl status mysql

Wenn es nicht läuft, starte es:

sudo systemctl start mysql
sudo systemctl enable mysql
  1. Überprüfen Sie, ob die MySQL-Erweiterung von PHP installiert ist:
php -m | grep mysql

Falls nicht vorhanden, installieren Sie es:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx
  1. Überprüfen Sie die Datenbank-Anmeldeinformationen und Berechtigungen. Testen Sie die Verbindung:
mysql -u username -p database_name

Wenn dies fehlschlägt, überprüfen Sie:

  • Der Benutzername und das Passwort sind korrekt
  • Die Datenbank existiert: SHOW DATABASES;
  • Der Benutzer hat Berechtigungen: SHOW GRANTS FOR 'username'@'localhost';

Hinweis: Für die MySQL-Einrichtung siehe Wie man MySQL unter Ubuntu installiert.

PHP-Datei wird als Nur-Text angezeigt, anstatt ausgeführt zu werden

Wenn Ihre PHP-Datei im Browser als Klartext angezeigt wird:

  1. Überprüfen Sie die Dateierweiterung: Sie muss .php sein, nicht .txt oder .html

  2. Überprüfen, ob PHP Dateien verarbeitet:

    • Apache: Überprüfen Sie, ob mod_php aktiviert ist: apache2ctl -M | grep php
    • Nginx: Überprüfen Sie, ob PHP-FPM läuft und der Socket-Pfad korrekt ist
  3. Dateiberechtigungen überprüfen: Der Webserver muss die Datei lesen können

  4. Überprüfen Sie, ob die Datei PHP-Code enthält: Stellen Sie sicher, dass sie mit <?php oder <? beginnt

  5. Überprüfen Sie die Webserver-Konfiguration:

    • Apache: Virtueller Host könnte nicht korrekt konfiguriert sein
    • Nginx: Der Block location ~ \.php$ könnte fehlen oder falsch sein

Datei-Upload-Probleme

Wenn das Hochladen von Dateien fehlschlägt, können Fehler wie die folgenden auftreten:

The uploaded file exceeds the upload_max_filesize directive

Überprüfen Sie diese php.ini-Einstellungen:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

Wichtig: post_max_size muss größer als upload_max_filesize sein. Wenn Sie upload_max_filesize=100M einstellen, setzen Sie post_max_size=110M oder höher.

Wenn Uploads weiterhin fehlschlagen:

  1. Überprüfen Sie das Fehlerprotokoll auf spezifische Fehlermeldungen
  2. Überprüfen Sie, ob das Upload-Verzeichnis existiert und beschreibbar ist:
sudo chmod 755 /path/to/upload/directory
sudo chown www-data:www-data /path/to/upload/directory
  1. Festplattenspeicher prüfen: df -h
  2. Überprüfen Sie, ob das Formular enctype="multipart/form-data" verwendet

Starten Sie Ihren Webserver neu, nachdem Sie Änderungen an der php.ini vorgenommen haben.

Häufig gestellte Fragen

Wie installiere ich PHP 8.1 auf Ubuntu?

Installieren Sie PHP 8.1 mit Ubuntus Paketmanager: sudo apt update && sudo apt install php8.1. PHP 8.1 ist in den Standard-Repositories von Ubuntu verfügbar, sodass keine zusätzlichen Paketquellen benötigt werden.

Welche PHP-Erweiterungen sind für die Entwicklung unerlässlich?

Wesentliche Erweiterungen umfassen php8.1-cli, php8.1-mysql, php8.1-curl, php8.1-xml, php8.1-mbstring, php8.1-zip, php8.1-gd und php8.1-bcmath. Diese decken Datenbankverbindungen, HTTP-Anfragen, Zeichenkettenverarbeitung und Bildbearbeitung ab.

Wie konfiguriere ich PHP mit Apache oder Nginx?

Für Apache installieren Sie libapache2-mod-php8.1 und aktivieren es mit sudo a2enmod php8.1. Für Nginx installieren Sie php8.1-fpm und konfigurieren Nginx so, dass PHP-Anfragen über FastCGI an den PHP-FPM-Socket weitergeleitet werden.

Wie kann ich überprüfen, ob PHP korrekt installiert ist?

Führen Sie php -v aus, um die PHP-Version zu überprüfen. Erstellen Sie eine Testdatei mit <?php phpinfo(); ?> und rufen Sie diese über Ihren Webserver auf, um detaillierte Informationen zur PHP-Konfiguration zu erhalten.

Kann ich Laravel oder WordPress mit dieser Einrichtung lokal ausführen?

Ja. Laravel erfordert Composer und die oben genannten Standard-PHP-Erweiterungen. WordPress benötigt zusätzlich zu PHP eine MySQL-Datenbank. Beide Frameworks funktionieren sowohl mit Apache- als auch mit Nginx-Konfigurationen.

Wie installiere ich Composer für PHP-Projekte?

Laden Sie den Composer-Installer herunter, überprüfen Sie seinen Hash und installieren Sie ihn global: sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer. Überprüfen Sie die Installation mit composer --version.

Wie behebe ich fehlende PHP-Erweiterungen?

Überprüfen Sie installierte Erweiterungen mit php -m. Installieren Sie fehlende Erweiterungen mit sudo apt install php8.1-extension_name und starten Sie anschließend Ihren Webserver neu.

Wie konfiguriere ich die PHP-Fehlerberichterstattung für die Entwicklung?

Bearbeiten Sie php.ini und setzen Sie display_errors=On, error_reporting=E_ALL und log_errors=On. Denken Sie daran, die Fehleranzeige in Produktionsumgebungen zu deaktivieren.

Was ist der Unterschied zwischen Apache und Nginx für PHP?

Apache verwendet mod_php, um PHP direkt zu verarbeiten (PHP ist im Apache-Prozess eingebettet), während Nginx PHP-FPM (FastCGI Process Manager) benötigt, um PHP-Anfragen zu bearbeiten (PHP läuft als separater Dienst). Siehe den Abschnitt „Die Wahl zwischen Apache und Nginx“ oben für eine detaillierte Vergleichstabelle. Beide Ansätze funktionieren gut; wählen Sie basierend auf Ihren Leistungsanforderungen, Ihrer Erfahrung und der vorhandenen Infrastruktur.

Kann ich mehrere PHP-Versionen auf demselben System installieren?

Ja, mit Tools wie phpenv oder phpbrew. Für die meisten Entwicklungsszenarien reicht jedoch eine einzige PHP-Version aus. Verwenden Sie Versionsmanager, wenn Sie Anwendungen gegen verschiedene PHP-Versionen testen müssen.

Schlussfolgerung

Sie haben nun eine vollständig konfigurierte PHP 8.1-Entwicklungsumgebung auf Ubuntu mit Unterstützung für sowohl Apache- als auch Nginx-Webserver. Ihre Einrichtung umfasst wichtige PHP-Erweiterungen, Composer für das Abhängigkeitsmanagement und eine richtige Konfiguration für die lokale Entwicklung.

Bevor Sie mit Ihrem nächsten Projekt beginnen, sollten Sie in Erwägung ziehen, eine integrierte Entwicklungsumgebung (IDE) wie VS Code mit PHP-Erweiterungen für Syntaxhervorhebung, Debugging und IntelliSense-Unterstützung einzurichten.

Mit Ihrer Umgebung bereit können Sie die PHP-Entwicklung weiter erkunden:

  • Lerne die Grundlagen von PHP mit Wie man mit Strings in PHP arbeitet
  • APIs erstellen mit How To Use Web APIs in PHP
  • Funktionen in 'Wie man Funktionen in PHP verwendet' verstehen
  • Richten Sie Datenbanken mit Wie man PostgreSQL auf Ubuntu installiert und verwendet ein

Für Produktionsdeployments sollten Sie in Betracht ziehen, die Linux-Console.net App Platform zu nutzen, um Ihre PHP-Anwendungen direkt von GitHub mit automatischer Skalierung und SSL-Zertifikaten bereitzustellen.

Danke, dass Sie mit der Linux-Console.net Community lernen.