Standard PHP-Version ändern

  • Hallo zusammen,


    danke für die Antworten.


    Ok dann müssen wir im ersten Schritt für alle Verträge in der Datenbank eine PHP-Version definieren
    und können erst im Anschluss - ohne Auswirkungen auf die "standard" Versionen - via custom.lua
    die Standard-PHP-Version auf 7.3 festlegen ..



    kk
    Gibt es für die Änderungen in der Datenbank eine Hilfestellung?
    Bzw. wird dafür ggf. sogar ein Script bereitgestellt?



    Danke!

  • Soll PHP 7.3 also nur für neue (Sub)Domains als "Standardversion" voreingestellt werden?
    Das ist nicht ganz einfach. "Standardversion" bedeutet, dass für die betroffene Domain keine bestimmte Version fest eingestellt ist. Man kann höchstens sagen, dass alle Verträge die aktuell die Standardversion (z.B. 5.6) nutzen, fix auf 5.6 eingestellt werden und anschließend z.B. 7.3 als neue Standardversion festsetzen. Damit sind aber die alten Verträge auf die bislang alte Standardversion "festgenagelt".



    So soll es sein.


    Vorhandene Domains mit PHP X.Y sollen die PHP Version X.Y beibehalten.
    PHP 7.3 soll neue Standardversion werden und für alle neuen (Sub)Domains gelten.

  • SQL
    UPDATE
    SUBDOMAINS SET SD_PHPVERSIONID = (SELECT DISTINCT WR_ID FROM WEBRUNTIMES WHERE WR_CODE = 'php_56x') WHERE SD_PHPVERSIONID IS NULL;


    Würde eine explizite PHP Version für alle Domains setzen, welche die Standard-PHP Version (NULL) nutzen.
    (In Beispiel auf den ID Tag php_56x).


    Dann kann via

    Code
    LC.web.PHPDEFAULT="php_71x"

    die neue Standardversion gesetzt werden.


    Backup der /var/lib/liveconfig/liveconfig.db nicht vergessen. Vorher ;)

  • Ah danke. Wenn ich mir die Tabelle WEBRUNTIMES anschaue scheint das aber nur in einer Single Server Installation zu gehen da er pro Server eine anderen Versions ID hat wenn ich das richtig sehe.
    Aber schon einmal ein guter Anfang.

  • Für Multi Server Installation müsstest du die Korrekte PHPVERSIONID (auf dem Zielserver) raussuchen und dann dann das Update selektiv (je Webserver) ausführen.


    SQL
    UPDATE SUBDOMAINS SET SD_PHPVERSIONID = ##ID## WHERE SD_PHPVERSIONID IS NULL AND SD_WEBSERVERID = ##WSID##;
  • Es wäre schön, wenn soetwas künftig ohne Bastelarbeiten in der Datenbank direkt in der Oberfläche steuerbar wäre.
    Auch wenn man z.B. alte PHP-Versionen löscht, muss man immer wieder in die Datenbank eingreifen, was sehr umständlich ist. Auch hier ist eine Lösung gefragt!

  • Kann eventuell jemand ( kk ?) die SQL Queries prüfen?
    Vermutlich geht das ja auch einfacher bzw. in weniger Schritten ..


    Wünschenswert wäre eine Lösung durch LiveConfig selbst (ein Script oder ähnliches?)
    damit keine manuellen Änderungen in der DB notwendig sind ohne zu wissen
    an welcher Stelle ggf. noch etwas geändert oder beachtet werden muss ..



    1) Über den Hostname des Webservers die richtige Server-ID ermitteln
    Query: SELECT SRV_ID FROM SERVERS WHERE SRV_HOSTID LIKE '%<Hostname/Teil vom Hostname>%';
    Ergibt: SRV_ID = 14


    2) Anhand der Server-ID die passende Webserver-ID ermitteln
    Query: SELECT WS_ID FROM WEBSERVERS WHERE WS_SERVERID = '<ID aus der #1>';
    Ergibt: WS_ID = 11


    3) Anhand der Webserver-ID die PHP-Versionen und die "PHP-ID" ermitteln
    Query: SELECT WR_ID, WR_CODE, WR_VERSION FROM WEBRUNTIMES WHERE WR_SERVERID = '<ID aus der #2>';
    Ergibt:
    "WR_ID" "WR_CODE" "WR_VERSION"
    "23" "php5" "5.6.40"
    "24" "php55" "5.5.38"
    "25" "php70" "7.0.33"
    "57" "php71" "7.1.28"
    "97" "php72" "7.2.17"
    "152" "php73" "7.3.4"


    4) Prüfen was am Server default ist
    root@<HOST>:~# lcclient --diag | grep DEFAULT
    - PHP 5.6.40 [DEFAULT] (code='php5')
    Entspricht der ID 23 aus der #3


    5) Domains und PHP-ID ermitteln (IST-Stand)
    Query: SELECT SD_HOST, SD_WEBDESTINATION, SD_PHPVERSIONID, SD_WEBSERVERID FROM SUBDOMAINS WHERE SD_WEBSERVERID = '<ID aus der #2>';
    Ergibt: Auflistung mit Domain + NULLs in der PHP-ID-Spalte wenn default-PHP-Version gesetzt ist


    6) Domains von NULL auf die passende PHP-ID updaten
    => Wurde von mir nicht getestet! Bitte nicht auf einem Produktivsystem testen!
    Query: UPDATE SUBDOMAINS SET SD_PHPVERSIONID = <ID aus der #4> WHERE SD_PHPVERSIONID IS NULL AND SD_WEBSERVERID = <ID aus der #2>;
    Ergibt: Die PHP-ID anstelle von NULL für die jeweiligen Domains des Servers


    7) Den Server auf default v7.3 umstellen
    /usr/lib/liveconfig/lua/custom.lua -> LC.web.PHPDEFAULT="php73"
    Damit ist php73 Standard und die alten Webseiten laufen mit den jeweiligen PHP-Versionen weiter.

  • Hallo,


    Die Server-ID WR_SERVERID in Punkt (3) bezieht sich auf SERVERS.SRV_ID!


    Ansonsten dürfte das soweit aber funktionieren.
    Wie immer: Datenbank-Eingriffe auf eigene Gefahr - bitte vorher immer ein Backup erzeugen.


    Die Möglichkeit die PHP-Version über die GUI serverweit zu ändern steht bereits bei uns in der Warteschlange.


    Viele Grüße


    -Klaus Keppler

  • Ich würde es sehr begrüßen, wenn die Standardversion auch "festgepinnt" werden kann.


    Auswahl bisher:
    Standard (7.Y)
    7.X


    Vorschlag:
    Standard (7.Y). empfohlen
    7.X
    7.Y


    So kann VOR Änderung der Standarversion (z.B. per custom.lua oder OS-Upgrade) die bisherige (Standard)Version festgepinnt werden wenn gewünscht.

    # Das Gras wächst nicht schneller wenn man daran zieht # Bitte keine inflationären Vollzitate #

  • Du kannst die Standard PHP Version Ändern:
    Navigiere zu /usr/lib/liveconfig/lua/ erstelle eine custom.lua

    Zitat
    Zitat

    LC.web.PHPDEFAULT="php72"


    Die Version php72 ist installiert durch https://www.liveconfig.com/wiki/de/multiphp

  • Ändert man den Standard wie beschrieben z.B. von PHP 5.6 auf 7.3 wirkt sich dies
    auf alle Domains (auch Bestand) auf, welche die Standard PHP-Version verwenden.


    Man müsste vorher für diese Domains explizit die php56 Version setzen und
    im Anschluss den Standard umstellen - Darum geht es hier im Thread und um
    die dazu notwendigen manuellen Eingriffe in die LC-DB.


    (bzw. es geht hier darum, die Funktion in LC zu integrieren)

  • Wie wäre es denn, wenn man das einfach so ändert, dass die Standardversion nur hervorgehoben wird, man aber im Hintergrund immer die konkrete Version speichert. So kann man dann ganz nach Belieben die Standardversion anpassen ohne dass es beim Kunden eine Änderung gibt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!