PHP ist eine weit verbreitete serverseitige Skriptsprache, die hauptsächlich für die Entwicklung dynamischer Webseiten und Anwendungen genutzt wird. Obwohl PHP 7.4 am 28. November 2022 das End-of-Life (EOL) erreicht hat, verlassen sich manche ältere Projekte weiterhin aus Kompatibilitätsgründen darauf. In den aktuellen FreeBSD Ports-Zweigen ist PHP 7.4 nicht mehr enthalten, jedoch kann es über einen Legacy-Zweig weiterhin installiert werden.
Diese Anleitung beschreibt den Prozess zur Einrichtung von PHP 7.4 auf FreeBSD 14.0 mithilfe des 2022Q4-Zweigs der FreeBSD Ports Collection. Sie kompilieren PHP aus dem Quellcode, richten PHP-FPM ein und integrieren es in den Apache-Webserver, um alte Anwendungen weiterhin zu unterstützen.
Warnung
PHP 7.4 ist veraltet und erhält keine Sicherheitsupdates mehr. Da es EOL ist, kann die weitere Nutzung Ihr System Sicherheitsrisiken aussetzen. Verwenden Sie es ausschließlich für Legacy-Anwendungen, die es erfordern, und planen Sie eine Migration zu einer unterstützten Version so bald wie möglich.
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie:
- Zugriff auf ein FreeBSD 14.0 System als Nicht-Root-Sudo-Nutzer haben.
Schritt 1: Installation der FreeBSD Ports Collection
Die FreeBSD Ports Collection ermöglicht das Kompilieren und Installieren von Drittanbieter-Software aus dem Quellcode. Um PHP 7.4 zu installieren, muss der ältere 2022Q4-Zweig verwendet werden.
Aktualisieren Sie die Paketinformationen auf dem Server:
$ sudo pkg updateInstallieren Sie Git:
$ sudo pkg install -y gitKlonen Sie den Legacy-Zweig der Ports Collection (2022Q4):
$ sudo git clone --depth 1 https://git.FreeBSD.org/ports.git -b 2022Q4 /usr/portsPrüfen Sie, ob das Verzeichnis /usr/ports existiert:
$ ls /usr/portsSchritt 2: PHP 7.4 kompilieren und installieren
Da FreeBSDs aktuelle Ports-Bäume PHP 7.4 nicht mehr unterstützen, muss es über den Legacy-Zweig kompiliert werden. Gehen Sie dazu wie folgt vor, um Abhängigkeiten zu installieren, Perl neu zu kompilieren und anschließend PHP 7.4 zu bauen.
Installieren Sie die benötigten Build-Werkzeuge:
$ sudo pkg install -y curl re2c zip cmake gperf libzip html2text libxml2 gettext-toolsEntfernen Sie das vorhandene Perl-Binary, um Konflikte zu vermeiden:
$ sudo pkg remove -y perl5Wechseln Sie in das Verzeichnis der Perl 5.36 Quellen:
$ cd /usr/ports/lang/perl5.36Kompilieren und installieren Sie Perl 5.36:
$ sudo make BATCH=yes install cleanWechseln Sie anschließend in das Quellverzeichnis von PHP 7.4:
$ cd /usr/ports/lang/php74Kompilieren und installieren Sie PHP 7.4:
$ sudo make BATCH=yes install cleanSchritt 3: PHP-Installation überprüfen
Prüfen Sie die installierte PHP-Version:
$ php -vKopieren Sie die Standard-Produktionskonfigurationsdatei:
$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.iniÜberprüfen Sie die aktiven Variablen in der php.ini-Datei:
$ cat /usr/local/etc/php.ini | egrep -v '^;|^$'Dieser Befehl listet alle aktivierten Konfigurationsoptionen wie Speicherlimits, Ausführungszeit und Dateiupload-Einstellungen auf. Passen Sie diese Werte an die Anforderungen Ihrer Anwendung an.
PHP 7.4 Erweiterungen installieren
PHP-Erweiterungen erweitern die Funktionalität von PHP, indem sie zusätzliche Features wie Datenbankanbindung oder Datenverarbeitung bereitstellen. Führen Sie die folgenden Schritte aus, um die benötigten PHP 7.4-Erweiterungen zu kompilieren und zu aktivieren.
Wechseln Sie in das Verzeichnis der PHP 7.4 Erweiterungen:
$ cd /usr/ports/lang/php74-extensionsStarten Sie das Konfigurationstool:
$ sudo make configNutzen Sie die Pfeiltasten zur Navigation und die Leertaste, um die gewünschten Erweiterungen auszuwählen. Drücken Sie anschließend Enter, um die Auswahl zu speichern und den Dialog zu verlassen.
Kompilieren und installieren Sie die ausgewählten Erweiterungen:
$ sudo make BATCH=yes installÜberprüfen Sie die installierten PHP-Module:
$ php -mDie Ausgabe sollte eine Liste der installierten Module enthalten, darunter Datenbanktreiber, Kompression, XML-Verarbeitung und mehr.
PHP 7.4 FPM kompilieren und installieren
PHP-FPM (FastCGI Process Manager) verarbeitet PHP-Anfragen effizient und verbessert die Performance. Beim Kompilieren von PHP 7.4 aus der Ports Collection wird PHP-FPM automatisch mit installiert. Führen Sie die folgenden Schritte aus, um den Dienst zu konfigurieren und zu starten.
Prüfen Sie die installierte PHP-FPM-Version:
$ php-fpm --versionAktivieren Sie PHP-FPM für den automatischen Start beim Booten:
$ sudo sysrc php_fpm_enable=YESStarten Sie den PHP-FPM-Dienst:
$ sudo service php-fpm startPrüfen Sie den Status, um sicherzustellen, dass der Dienst läuft:
$ sudo service php-fpm statusPHP-FPM 7.4 konfigurieren
Passen Sie nun die PHP-FPM-Einstellungen an, indem Sie die Standard-Pool-Konfiguration bearbeiten. Diese Anpassungen helfen dabei, die Ressourcennutzung zu optimieren und die Leistung entsprechend der Serverlast zu verbessern.
Navigieren Sie in das Konfigurationsverzeichnis:
$ cd /usr/local/etc/php-fpm.d/Stellen Sie sicher, dass die Datei www.conf vorhanden ist:
$ lsÖffnen Sie die Datei www.conf mit einem Texteditor:
$ sudo vim www.confPassen Sie die folgenden Pool-Einstellungen an:
[www]
user = www
group = www
...
listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
...
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
......Erklärung der wichtigsten Parameter:
- [www]: Definiert den Namen des Pools. Mehrere Pools können unabhängig voneinander verwaltet werden.
- user/group: Gibt das Systemkonto an, mit dem PHP-FPM Skripte sicher ausführt.
- listen: Legt den Socket oder die TCP-Adresse für FastCGI-Verbindungen fest.
- listen.owner / listen.group: Bestimmen die Eigentümer des Sockets und schränken so den Zugriff ein.
- listen.mode: Definiert die Berechtigungen für den Socket.
- pm: Legt die Strategie zur Prozessverwaltung fest (hier dynamische Skalierung).
- pm.max_children: Begrenzung der maximalen gleichzeitigen PHP-Worker.
- pm.start_servers: Anzahl der Worker, die beim Start geladen werden.
- pm.min_spare_servers / pm.max_spare_servers: Verwaltung der minimalen und maximalen Leerlaufprozesse, um eine Balance zwischen Reaktionsfähigkeit und Speicherverbrauch zu gewährleisten.
Starten Sie PHP-FPM neu, um die Änderungen zu übernehmen:
$ sudo service php-fpm restartPrüfen Sie erneut den Status, um sicherzustellen, dass PHP-FPM mit der neuen Konfiguration läuft:
$ sudo service php-fpm statusPHP 7.4 testen und verwenden
In diesem Abschnitt überprüfen Sie, ob PHP 7.4 korrekt installiert und funktionsfähig ist. Sie testen die PHP-CLI, führen ein Beispielskript aus und konfigurieren Apache, um PHP-FPM-Anfragen über einen UNIX-Socket zu verarbeiten. So stellen Sie sicher, dass das System die gewünschte PHP-Version nutzt.
PHP-CLI testen
Überprüfen Sie zunächst die installierte PHP-Version:
$ php -vWechseln Sie in Ihr Home-Verzeichnis:
$ cd ~Legen Sie eine Testdatei mit dem Namen greet.php an:
$ vim greet.phpFügen Sie folgenden PHP-Code ein:
<!--?php echo "Grüße von centron!\n"; echo "Aktuelle PHP-Version: " . phpversion() . "\n"; ?-->Führen Sie das Skript mit der PHP-CLI aus:
$ php greet.phpApache mit PHP-FPM konfigurieren
Sobald PHP 7.4 über die CLI funktioniert, können Sie es mit Apache über PHP-FPM und einen UNIX-Socket integrieren.
Installieren Sie Apache:
$ sudo pkg install -y apache24Aktivieren Sie den automatischen Start von Apache beim Booten:
$ sudo sysrc apache24_enable="YES"Starten Sie den Apache-Dienst:
$ sudo service apache24 startÜberprüfen Sie den Status von Apache:
$ sudo service apache24 statusBearbeiten Sie die Apache-Konfigurationsdatei:
$ sudo vim /usr/local/etc/apache24/httpd.confKommentieren Sie die folgenden Module ein, indem Sie das # am Zeilenanfang entfernen:
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
LoadModule rewrite_module libexec/apache24/mod_rewrite.soLegen Sie eine neue VirtualHost-Konfigurationsdatei an:
$ sudo vim /usr/local/etc/apache24/Includes/php74.confFügen Sie die folgende Konfiguration ein:
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/usr/local/www/apache24/data"
<Directory "/usr/local/www/apache24/data">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog "/var/log/httpd-error.log"
CustomLog "/var/log/httpd-access.log" combined
</VirtualHost>Erstellen Sie eine Test-PHP-Datei im Webverzeichnis:
$ echo '<?php
echo "<div style=\"text-align: center;\">
<h1>Grüße von centron!</h1>
</div>";
?>' | sudo tee /usr/local/www/apache24/data/test.php > /dev/nullStarten Sie PHP-FPM und Apache neu:
$ sudo service php-fpm restart
$ sudo service apache24 restartPrüfen Sie, ob die Dienste laufen:
$ sudo service php-fpm status
$ sudo service apache24 statusÖffnen Sie schließlich folgende URL in Ihrem Browser, um die Testseite anzuzeigen:
http://your-server-ip/test.php
Fazit
Sie haben erfolgreich PHP 7.4 auf FreeBSD 14.0 mithilfe der Legacy Ports Collection installiert, PHP-FPM zur Leistungsoptimierung konfiguriert und Apache so eingerichtet, dass es FastCGI-Anfragen verarbeitet. Die Installation wurde über die CLI und ein Beispielszenario im Browser überprüft. Dieses Setup ermöglicht den Betrieb älterer Anwendungen mit PHP 7.4. Da diese Version jedoch veraltet ist und keine Sicherheitsupdates mehr erhält, wird dringend empfohlen, auf eine unterstützte Version wie PHP 8.x zu migrieren, um bessere Sicherheit, Kompatibilität und Performance zu gewährleisten.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.