mva und metanet unterscheiden sich bei plesk in der Art und Weise, wie sie mit den PHP Versionen umgehen. Bei mva sind die beiden Dateien .php-ini und .php-version wichtig zu kennen.
1. Die zwei Systeme
Metanet: Per SSH landen wir in einer abgeschotteten Umgebung (chroot). Im Home liegen eigene Ordner wie bin, usr, opt, etc: eine Mini-Kopie der Server-Programme nur für uns. Oben im Prompt steht darum /. Die PHP-Version im Terminal regeln wir selbst, z.B. über die .bash_profile.
MVA: Per SSH bekommen wir eine normale Shell auf dem Server. Welche PHP-Version und welche Einstellungen das Terminal nutzt, steuert Plesk über zwei kleine Dateien im Home-Ordner.
2. Verhalten bei MVA: .php-version und .php-ini
Plesk legt beim Einstellen der PHP-Version einer Domain zwei Dateien an:
.php-version: enthält nur die Versionsnummer (z.B.8.3). Das Werkzeug.phpenvstartet beim Aufruf vonphpautomatisch diese Version..php-ini: enthält nur einen Pfad zur php.ini, deren Einstellungen das Terminal laden soll.
Das Terminal sucht im aktuellen Ordner und dann aufwärts. Die erste gefundene Datei gilt. Liegen sie im Home, gelten sie für alles darunter (stage und live).
Was passiert ist: Beim D10-Go-live (19.10., 20:35) hat Plesk beim Umstellen der Domain hbmhealthcare.com die Dateien neu geschrieben. ~/.php-ini zeigte danach auf die php.ini der Domain (/var/www/vhosts/system/hbmhealthcare.com/etc/php.ini). Dort ist open_basedir gesetzt, und Drush startet dann nicht. Vorher lief Drush, weil die Dateien so noch nicht existierten.
Warum Drush nicht startet: open_basedir ist eine Liste von Ordnern, auf die PHP zugreifen darf, alles andere wird blockiert. Für die Website ist das ein sinnvoller Schutz. Drush muss aber auch ausserhalb dieser Ordner arbeiten (z.B. temporäre Dateien, Konfiguration, eigene Programmteile). Damit es nicht mitten in einem Update mit seltsamen Fehlern abbricht, prüft Drush gleich beim Start, ob open_basedir gesetzt ist, und weigert sich dann von vornherein.
Das ist dieselbe Ursache wie beim Anlegen der Backup-Verzeichnisse auf stage (D10): Dort hat open_basedir verhindert, dass Drupal ausserhalb der erlaubten Ordner schreibt, darum mussten Pfade angepasst werden. Der Unterschied: Dort ging es um PHP der Website, hier um PHP im Terminal.
Lösung:
~/.php-iniauf die Standard-php.ini umgestellt:/opt/plesk/php/8.3/etc/php.ini(ohne open_basedir). Sicherung in~/plesk-stage/home-php-ini.bak.- Die überflüssigen
.php-ini/.php-versioninhttpdocs/webundstage.hbmhealthcare.com/webgelöscht. usephp83aus der.bash_profileentfernt: Die PHP-Version kommt jetzt automatisch aus~/.php-version.
Prüfen: php --ini → «Loaded Configuration File» muss /opt/plesk/php/8.3/etc/php.ini zeigen.
Plan B, falls Plesk die ~/.php-ini wieder überschreibt: Drush mit absolutem PHP-Pfad starten (Empfehlung des Providers):
alias drushh='/opt/plesk/php/8.3/bin/php ./vendor/bin/drush.php'Achtung bei PHP-Wechsel in Plesk: Danach cat ~/.php-ini prüfen, ob Plesk sie wieder auf die Domain-php.ini gestellt hat. Bei neuer Version muss im Pfad auch die Nummer stimmen (z.B. /opt/plesk/php/8.4/etc/php.ini).