snippets · php
CLI sagt PHP 8.x, die Website verhält sich aber wie eine andere PHP-Version
php -v zeigt die erwartete Version. Im Browser fehlt trotzdem eine Extension, eine INI-Einstellung greift nicht oder Syntax verhält sich anders.
Das Problem
PHP CLI und die Web-Ausführung sind verschiedene SAPIs und können unterschiedliche Binärdateien, INI-Dateien und Extensions verwenden.
CLI-Seite festhalten
php -v
php --ini
php -r 'echo PHP_SAPI, "\n", PHP_BINARY, "\n", php_ini_loaded_file(), "\n";'
Web-Seite gezielt vergleichen
Für eine kurzlebige, geschützte Diagnose kannst du temporär ausgeben:
<?php
header('Content-Type: text/plain');
echo PHP_VERSION, "\n";
echo PHP_SAPI, "\n";
echo php_ini_loaded_file() ?: 'no ini', "\n";
Danach die Datei wieder löschen. Kein dauerhaftes phpinfo() öffentlich stehen lassen.
Was du suchst
- andere PHP-Version
- anderer SAPI (
cli,fpm-fcgi,apache2handler, ...) - andere
php.ini - zusätzliche
conf.d-Dateien - Extension nur in einer Umgebung geladen
Warum das häufig passiert
Auf Hosting-Systemen und Entwicklungsrechnern können mehrere PHP-Versionen parallel installiert sein. Dein Shell-PATH entscheidet über php; Apache/FPM hat seine eigene Konfiguration.
Quelle: https://www.php.net/manual/en/features.commandline.differences.php