Update von NextCloud über CLI funktioniert nicht

  • Wenn ich per

    Code
    /usr/local/php82/bin/php /cloud.xxxxxxx.de/httpdocs/updater/updater.phar --no-interaction

    versuche NextCloud zu updaten, erhalte ich folgenden Fehler:

    Code
    PHP Warning:  fopen(/var/www/vhosts/hostingxxxxx.xxxx.netcup.net/cloud.xxxxxxx.de/httpdocs/data/updater.log): Failed to open stream: No such file or directory in phar:///cloud.xxxxxx.de/httpdocs/updater/updater.phar/lib/Updater.php on line 1156
    Could not open updater.log

    Das gleiche Problem habe ich mit zwei verschiedenen NextCloud Instanzen.


    Hat jemand eine Idee was da schief läuft?

    Die Zeit ist wie eine verspielte Katze.

    Sie umschmeichelt einen
    und schlabbert den Tag auf wie eine Schale Milch.

    (Henry Ford)

  • Zur hilfreichsten Antwort springen
  • Der Pfad des Datenverzeichnisses ist bei HTTP und CLI unterschiedlich. Das Forum ist voll mit Threads dazu :)


    Lösung: Zusätzliche Konfigurationsdatei mit diesem Inhalt anlegen, wie hier gezeigt. Dann wird der korrekte Pfad automatisch gesetzt.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    Einmal editiert, zuletzt von KB19 ()

  • Die Pfade unterscheiden sich zwischen dem Zugriff über Web und CLI.


    Das lässt sich fixen, indem du die Datei data.config.php im Ordner config anlegst mit folgendem Inhalt:


    PHP: data.config.php
    <?php
    
    $CONFIG['datadirectory'] = realpath(__dir__ . '/../data');


    EDIT: Mist, zu spät ^^

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

    Einmal editiert, zuletzt von Virinum ()

  • vermutlich eine Blöde frage, aber muss ich den Inhalt noch Anpassen oder nur so kopieren? Weil ich habe es 1:1 kopiert.

    Die Zeit ist wie eine verspielte Katze.

    Sie umschmeichelt einen
    und schlabbert den Tag auf wie eine Schale Milch.

    (Henry Ford)

  • Ich update normalerweise immer über die Weboberfläche. Hab's jetzt mal auf deinem Weg probiert. Ich bekomme die selbe Meldung. :/

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

  • Wenn man viele Daten in NextCloud hat, funktioniert das Update über die Weboberfläche nicht mehr. Das bleibt dann gerne mal hängen. Abgesehen davon würde ich es gerne automatisieren.

    Die Zeit ist wie eine verspielte Katze.

    Sie umschmeichelt einen
    und schlabbert den Tag auf wie eine Schale Milch.

    (Henry Ford)

  • Sieht so aus, als würde die updater.phar die zusätzliche data.config.php nicht berücksichtigen.

    Temporär sollte es gehen, indem du in der config.php bei datadirectory einfach realpath(__dir__ . '/../data') setzt. Also so in der Art:


    PHP
    <?php
    $CONFIG = array (
      // ...
      'datadirectory' => realpath(__dir__ . '/../data'),
      // ...
    );


    Das wird nach dem Update aber sehr wahrscheinlich wieder überschrieben.

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

  • danke für die Hilfe! Genau das ist das Problem.

    Wenn ich die Änderung in der config.php vornehme, funktionniert auch

    Code
    /usr/local/php82/bin/php /cloud.xxxxxxx.de/httpdocs/updater/updater.phar --no-interaction

    Um das PHP Limit von 512 MB zu umgehen, nutze ich sed in meinem script:

    Code
    sed -i -e '/$updater->verifyIntegrity();/d' /cloud.xxxxxxx.de/httpdocs/updater/index.php

    Damit wird bei jedem Ausführen in der entsprechenden Datei die Zeile verifyIntegrity gelöscht.

    Demnach müsste man das nur umbasteln für die config.php, damit jedes mal die datadirectory Zeile umgeschrieben wird.

    Die Zeit ist wie eine verspielte Katze.

    Sie umschmeichelt einen
    und schlabbert den Tag auf wie eine Schale Milch.

    (Henry Ford)

    • Hilfreichste Antwort

    Das hier ist die Stelle, die einfach nur die config.php einbindet: https://github.com/nextcloud/u…dff55ec/index.php#L79-L92


    Ein schneller Fix wäre, nach require_once $configFileName; noch require_once __DIR__ . '/../config/data.config.php'; einzufügen.

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

  • Mein PR musste leider revertet werden: https://github.com/nextcloud/updater/pull/540


    Ich habe mir aber nochmal ein paar Gedanken gemacht und bin doch zu einer Lösung gekommen.


    Es gibt die Möglichkeit die Environment-Variable NEXTCLOUD_CONFIG_DIR mitzugeben. Mit dieser kann man den Pfad überschreiben, in dem das Update-Script nach der config.php sucht.

    Ich habe also einfach im config-Verzeichnis einen Unterordner "updater" angelegt und dort folgende config.php erstellt:

    Der Cron-Job oder Aufruf über die CLI sieht dann so aus:


    NEXTCLOUD_CONFIG_DIR=/httpdocs/cloud.hostingXXXXXX.aXXXX.netcup.net/config/updater /usr/local/php82/bin/php /httpdocs/cloud.hostingXXXXXX.aXXXX.netcup.net/updater/updater.phar --no-interaction


    Natürlich müssen die Pfade und die PHP-Version entsprechend der eigenen Installation angepasst werden.

    Ich denke das ist erstmal ein stabiler Workaround.


    Ich habe damit allerdings noch kein Update durchgeführt. Die Ausgabe sieht aber ok aus:

    Code
    Current version is 28.0.4.
    
    No update available.
    
    Nothing to do.


    Wäre das etwas für https://github.com/froonix/webhosting-mods  KB19?

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

    Einmal editiert, zuletzt von Virinum ()

    Gefällt mir 2
  • Ich werde es auf jeden Fall mal genauer ansehen und testen, Danke! Damit ich es nicht vergesse, habe ich Issue #1 erstellt. Es wird nämlich definitiv einige Wochen dauern, bis ich Zeit dafür habe. :)


    PS: Wen darf ich als Autor angeben, falls ich das übernehme? Den GitHub-Benutzernamen aus dem PR #535?

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Wen darf ich als Autor angeben, falls ich das übernehme? Den GitHub-Benutzernamen aus dem PR #535?

    Ja, gern. Ich kann aber auch einen PR stellen, falls das hilft.

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

  • Ich kann aber auch einen PR stellen, falls das hilft.

    Testen muss ich es sowieso in Ruhe, also nicht wirklich. :)


    (Was aber nicht heißen soll, dass ich Dir einen PR ausreden möchte, wenn Dir langweilig ist. Schneller wird es jedoch trotzdem nicht drinnen landen.)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Testen muss ich es sowieso in Ruhe, also nicht wirklich. :)

    Dann lehne ich mich mal zurück und mache mir nen ruhigen Abend ^^

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | VPS 500 ARM


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

    Ente gut, alles gut 1