PHP-Auswahl und FPM-Pools
Diese Seite ist für Systemadministratoren und Support-Mitarbeitende bei Hosting-Anbietern, die PHP für Exponential-Websites auf Servern mit Panel auswählen und konfigurieren. Sie beantwortet, welche PHP-Versionen Sie anbieten, warum das PHP der Kommandozeile genauso zählt wie das Web-PHP, wie ein PHP-FPM-Pool für eine Exponential-Website aussehen sollte und wie Sie nach einer Änderung das richtige PHP neu laden, was auf Servern mit mehreren PHP-Versionen der häufigste Fehler ist.
Inhalt
- Welche PHP-Versionen Sie anbieten
- Web-PHP und PHP der Kommandozeile
- Ein Pool pro Website
- Pool-Einstellungen für Exponential
- OPcache
- Das richtige PHP-FPM neu laden
- Einschränkungen, die Panels oft setzen
- Checkliste
Welche PHP-Versionen Sie anbieten
Aus 2.2 PHP:
| PHP | Stand |
|---|---|
| 8.0 | unterstützt; läuft unter Apache mit mod_php oder PHP-FPM und ab dem Release 0.0.4.54 auch unter Velocity |
| 8.1 bis 8.4 | unterstützt, einschließlich Velocity |
| 8.5 | unterstützt; die neueste getestete Version |
| 7.4 | ab 6.0.15 ohne Support nutzbar (keine Zusage für Fehler- oder Sicherheitskorrekturen, ohne die Funktionen, die PHP 8 brauchen); nicht von 6.0.8 bis 6.0.14 |
Nutzen Sie das neueste PHP, das Ihr System anbietet: Jede Version bringt Geschwindigkeit, und die älteren verlieren zuerst die Sicherheitsunterstützung. 64-Bit-PHP wird für die Unterstützung von mehr als 30 Sprachen empfohlen.
Hinweis Die Unterstützung für PHP 8.0 ist neu in 6.0.15; die Releases
v6.0.8bisv6.0.14verlangen PHP 8.1. Eine Kunden-Website auf einem älteren Release 6.0.x braucht mindestens 8.1 (2.2).
Web-PHP und PHP der Kommandozeile
Exponential nutzt PHP zweimal: Das PHP des Webservers (PHP-FPM, mod_php oder die Worker von Velocity) liefert Seiten aus, und das PHP
der Kommandozeile (php) führt Composer, die Installer, die Konsole, die Cronjobs und Velocity selbst aus. Beide müssen eine
unterstützte Version sein und dieselben Erweiterungen haben. Auf Maschinen mit mehreren PHP-Versionen (Plesk, Remi) ist das php im
PATH oft nicht das, das der Webserver nutzt (Kommandozeile und Web-PHP).
Was schiefgeht, wenn sie sich unterscheiden: Composer wählt Paketversionen, die das Web-PHP nicht ausführen kann, oder eine Installation gelingt auf der Kommandozeile, und der Browser zeigt eine weiße Seite.
php -v; php -m # the PATH's PHP
/opt/plesk/php/8.5/bin/php -v # a Plesk PHP by its path
php --ini # the files the command line PHP readsVergleichen Sie mit der Webseite auf Setup > Systeminformationen, die zuerst sagt, welcher Server geantwortet hat und wie er PHP ausführt (Systeminformationen).
Tipp Wenn ein Panel die PHP-Version einer Website ändert, ändern Sie im selben Schritt das PHP der Kommandozeile in den Cron-Zeilen dieser Website und in
cronjob.ini [AdminSettings] PhpCliPath(Cron und Shell-Zugang).
Ein Pool pro Website
- Der Pool führt PHP als Benutzer der Website aus (8.5.2).
- Wenn mehrere Kunden auf einer Maschine voneinander auf Ebene des Betriebssystems abgeschottet sein müssen, nutzen Sie einen klassischen Server mit einem PHP-FPM-Pool pro Website (8.1).
- Alles, was
var/schreibt (Pool, Cron, Konsole, Velocity-Worker), läuft als dieser eine Benutzer (8.7.2).
Wo Pools liegen, laut den Quellen:
| System | Verzeichnis der Pools | Dienst |
|---|---|---|
| Plesk | /opt/plesk/php/<version>/etc/php-fpm.d/<domain>.conf | plesk-php<XY>-fpm |
| Red-Hat-Familie, mitgeliefertes PHP | /etc/php-fpm.d | php-fpm |
| Parallele Installationen von Remi | /etc/opt/remi/php*/php-fpm.d | php<XY>-php-fpm |
| Debian und Ubuntu | /etc/php/<version>/fpm/pool.d/ | php<version>-fpm |
Quellen: Kapitel 2, Plesk und Debian, Engines von Velocity, welches PHP-FPM.
Pool-Einstellungen für Exponential
Einstellungen, die für Exponential zählen (in der Pool-Datei oder in php.ini): memory_limit (mindestens 256M; mehr für große
Importe), max_execution_time, upload_max_filesize und post_max_size (Ihr größter Upload), OPcache an
(8.5.2).
Kapitel 2 nennt einen minimalen Satz für eine produktive php.ini (oder die php_admin_value-Zeilen eines PHP-FPM-Pools):
memory_limit = 256M
max_execution_time = 60
date.timezone = Europe/Berlin
file_uploads = On
upload_max_filesize = 64M
post_max_size = 64M
allow_url_fopen = On
variables_order = "EGPCS"Die Werte über den Mindestwerten sind Vorschläge, keine Anforderungen. Die Untergrenzen des Setup-Assistenten sind memory_limit 64M
und max_execution_time 30 (2.5).
Zeitgrenzen für Anfragen. Neben max_execution_time kann ein Pool eine Anfrage nach einer Grenze in Echtzeit beenden
(request_terminate_timeout), die set_time_limit() von PHP nicht überschreiben kann. Die Notizen zur MongoDB-Portierung
beschreiben, wie der Setup-Assistent dadurch abgebrochen wird und die Grenze nur für die Installation erhöht wird
(MongoDB-Unterstützung im Kernel). Unter Velocity ist das Gegenstück das
requestTimeout der Engine (30 Sekunden; der Client erhält 504); halten Sie SQLiteTransactionWait von SQLite (Standard 25) unter
dem Zeitlimit der Anfrage (9.2).
OPcache
Unter PHP-FPM schalten Sie OPcache in der php.ini des Pools ein und lassen die Zeitstempelprüfungen an: Setzen Sie auf einer
Exponential-Website nie opcache.validate_timestamps=0; eine Cache-Datei, die nach dem Leeren neu geschrieben wird, würde bis zum
Neustart von PHP in ihrer alten Form ausgeliefert (10.12 OPcache).
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.interned_strings_buffer=32
opcache.validate_timestamps=1
opcache.revalidate_freq=2Velocity setzt seine eigenen OPcache-Optionen in settings/velocity.ini [PHPSettings] IniOptions[]; siehe OPcache.
Das richtige PHP-FPM neu laden
Nach einer Änderung an einer PHP-Klasse, einem Operator oder einer INI-Datei laden Sie den FPM-Master neu, der die Website ausliefert
(8.5.2). Auf Maschinen mit mehreren PHP-Versionen ist der Master, der die
Website ausliefert, oft nicht der mit dem Namen php-fpm. Finden Sie ihn über seine Pool-Datei.
exp:velocity deploy erledigt das für Sie. [DeploySettings] PhpFpmService=auto (der Standard in settings/velocity.ini) findet in
den vier Pool-Verzeichnissen oben die Pool-Konfiguration, die nach der Hosting-Domain der Installation benannt ist
(/var/www/vhosts/<domain>/..., wie Plesk Pools benennt), oder eine, die das Verzeichnis der Installation nennt. Der Schritt ist ein
Neuladen, sodass keine Anfrage verloren geht. Er braucht root (Engines von Velocity).
php bin/php/console exp:velocity deploy --dry-run --allow-root-user # shows which service it found
php bin/php/console exp:velocity deploy --no-velocity --allow-root-user # Apache/nginx site: caches + FPM reloadSetzen Sie PhpFpmService auf den Namen des Dienstes, um ihn festzulegen, oder auf disabled, wenn Velocity die Website allein
ausliefert.
Einschränkungen, die Panels oft setzen
| Einschränkung | Wirkung auf Exponential | Quelle |
|---|---|---|
open_basedir | der Setup-Assistent warnt; ezupdate sucht Composer zuerst innerhalb der Installation | 2.4, ezupdate |
disable_functions mit proc_open, exec oder posix_kill | die Seite Cronjobs kann keinen Job starten, die Crontab nicht lesen oder einen Job nicht anhalten; sie sagt, welches davon | Cronjobs |
disable_functions mit opcache_get_status | Systeminformationen kann keine OPcache-Kennzahlen zeigen; der Cache funktioniert weiter | Systeminformationen |
variables_order ohne E | der optionale Test meldet, dass PHP keine Umgebungsvariablen registriert | Kapitel 12 |
Checkliste
- To do: PHP 8.0 oder später angeboten (8.0 nur für Websites, die 6.0.15 oder später betreiben; Velocity braucht darauf 0.0.4.54 oder später).
- To do: Dieselbe Version und dieselben Erweiterungen für Web und Kommandozeile; Cron und
PhpCliPathfolgen Änderungen der PHP-Version. - To do: Ein Pool pro Website, der als Benutzer der Website läuft.
- To do: Pool-Einstellungen und OPcache wie oben;
validate_timestampsan. - To do:
exp:velocity deploy --dry-runnennt den richtigen PHP-FPM-Dienst. - To do: Die Einschränkungen des Panels sind mit ihren Wirkungen dokumentiert.
Demomodus in einem Pool. Eine öffentliche Demo kann ihre Umgebungsvariable aus ihrem eigenen Pool bekommen: env[EXP_DEMO_MODE] = 1 (funktioniert mit clear_env = yes), dann den Master dieser Version neu laden. Nie in einem Pool, den andere Websites teilen. Demomodus für Hoster, php-fpm-pool-demo.conf.
Verwandte Seiten
- Control Panels: Überblick, Plesk
- PHP-Versionen und Erweiterungen, PHP-Einstellungen für Exponential
- Abstimmung von PHP-FPM, Benutzer und Pools pro Kunde
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.