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