NextCloud Datenverzeichnis

  • Hallo zusammen,


    ich versuche derzeit von einem anderen Webhoster meine NextCloud umzuziehen. Soweit hat auch alles geklappt, aber der Pfad vom Dateiverzeichnis ist wohl nicht valide. Egal wie ich das Datenverzeichnis eingestellt habe, es hat nicht richtig geklappt.


    Ich habe eine Datei datadirectory.config.php erstellt und folgendes eingefügt, damit es klappt:


    PHP
    <?php
    if (\OC::$CLI) {
        $CONFIG['datadirectory'] = '/httpdocs/folder/data-files';
    } else {
        $CONFIG['datadirectory'] = '/var/www/vhosts/hosting14xxx.a2ebb.netcup.net/httpdocs/folder/data-files';
    }


    Damit hat es auch super geklappt, allerdings erhalte ich folgende Fehlermeldung:


    Zitat

    Die Ausführung des Cron-Jobs über die Kommandozeile war nicht möglich. Folgende technische Fehler sind aufgetreten:

    • Ihr Datenverzeichnis ist ungültig. Stellen Sie sicher, dass eine Datei ".ocdata" im Wurzelverzeichnis des data-Verzeichnisses existiert

    Die Daten werden in der Cloud dennoch angezeigt. Hat NextCloud bereits jemand eingerichtet und kann mir Info geben was genau ich falsch mache?


    Grüße

  • Klappt dies auch, wenn das Datenverzeichnis außerhalb des DocumentRoots ist?

    Wenn Du den Pfad entsprechend anpasst, damit die relative Angabe stimmt: Ja!


    __dir__ bezieht sich in diesem Fall auf den Ordner, in dem die jeweilige PHP-Datei liegt. Also der config Ordner. Mit ../ ist jeweils eine Ebene höher gemeint.


    Die wichtigere Frage ist allerdings: Wo genau liegt Dein Datenverzeichnis? Vielleicht funktioniert es deshalb nicht, weil der open_basedir nicht dazu passt?


    Siehe auch: https://www.netcup-wiki.de/wiki/Plesk_Onyx_Panel_Webhosting#PHP-Einstellungen

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

  • Hi,


    danke erstmal.


    das Datenverzeichnis liegt in:

    Code
    /httpdocs/folder/data-files

    Die Cloud selber befindet sich in

    Code
    /httpdocs/folder/cloud

    data-files befindet sich also einen Ordner ÜBER der Cloud. Das habe ich absichtlich so gemacht.


    Das scheint über die data.config.php wie von Dir erwähnt auch nicht zu klappen - oder ich find es gerade noch nicht raus. Was genau muss ich im open_basdir denn beachten? Der steht bei mir auf Standard.


    Gruß

  • Wenn die Standardeinstellung (mit WEBSPACEROOT) ausgewählt ist, sollte es mal nicht am open_basedir liegen. :)


    Andere Frage: Hast Du den Original data Ordner an diese neue Position verschoben oder einfach einen neuen leeren Ordner erstellt?


    Probiere es mal damit:

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

    Das sollte die Ebene außerhalb des Nextcloud-Ordners berücksichtigen.

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

  • Ist das ein Webhosting oder Root-Server/VPS? Anyway, dein Data-Verzeichnis muss innerhalb eines Ordners liegen, der in deiner open_basedir Einstellung freigegeben ist (auch das Data-Verzeichnis selbst kann freigegeben sein). Oder open_basedir ist komplett deaktiviert - was im netcup-Webhosting nicht möglich ist, wohl aber auf einem Server. Das dürfte die performanteste Variante sein, weil ansonsten eben bei jedem Dateizugriff per PHP erst mal geprüft wird, ob der Zugriff erlaubt ist oder nicht.


    Im Webhosting ist die Standardeinstellung so, dass nur Dateien unterhalb des document root zugänglich sind und ein paar notwendige Systemverzeichnisse. Um die Einstellung mit Webspace-Root zu bekommen muss man das in den PHP-Einstellungen so umstellen.

  • Danke erst einmal. Ich habe das Originalverzeichnis kopiert. Das klappt so tatsächlich erst wie folgt nachdem ich die Änderung vorgenommen habe:


    - Ich kann mich in die NextCloud einloggen und Daten (Fotos, etc) einsehen

    - /usr/local/php74/bin/php occ maintenance:mode --off klappt auch


    Allerdings wird mir im Adminbereich der NextCloud weiterhin angezeigt:

    Zitat

    Die Ausführung des Cron-Jobs über die Kommandozeile war nicht möglich. Folgende technische Fehler sind aufgetreten:

    • Ihr Datenverzeichnis ist ungültig. Stellen Sie sicher, dass eine Datei ".ocdata" im Wurzelverzeichnis des data-Verzeichnisses existiert.

    Ich kann das nicht nachvollziehen, denn: Ich sehe die Daten doch! Wieso sagt NextCloud das Verzeichnis ist falsch? Und die .ocdata ist auch Verfügbar


    Grüße.

  • Anyway, dein Data-Verzeichnis muss innerhalb eines Ordners liegen, der in deiner open_basedir Einstellung freigegeben ist (auch das Data-Verzeichnis selbst kann freigegeben sein).

    Derzeit liegt das Data-Verzeichnis außerhalb vom DocumentRoot, aber die Dateien werden in der Cloud trotzdem angezeigt. Der Pfad ist entsprechend bpsw.

    Code
    /var/www/vhosts/hosting14xxx.a2ebb.netcup.net/httpdocs/folder/data-files

    Die Cloud selber liegt in .../folder/cloud


    Also scheinbar kommt die Cloud damit doch klar?

  • Wie sieht der Cronjob aus? Bei mir hat es geklappt mit PHP-Skript ausführen und Einstellung PHP 7.4. Den Pfad zur cron.php habe ich dann analog zum dort angezeigten Beispielpfad eingegeben, also ausgehend vom Rootverzeichnis der Chroot-Umgebung in der Konsole.

  • Mysteriös.. Ich habe jetzt mal über die Konsole


    /usr/local/php74/bin/php cron.php


    ausgeführt und der Fehler ist erstmal weg. Wenn ich die Datei direkt über den Browser aufrufe, kriege ich im Response auch success zurück.


    Wie versucht NextCloud den Skript denn auszuführen? Muss ich evtl. unter "Geplante Aufgaben" irgendeinen Cronjob anlegen?


    Btw: Kann ich bei netcup die Sekunden für den Strict-Transport-Security-HTTP-Header nicht über das Webpanel setzen?

  • ich klinke mich hier mal ein

    Mein Problem ist ähnlich

    Installiert ist die NC20 im WH


    Im WebUI sehe ich allerdings keine Fehler.

    Da mein eigentliches Problem ist, Daten aus der alten NC(v13) in diese zu bekommen ,

    habe ich erst gemerkt , dass der cron garnicht läuft.

    eigentlich will ich die per scp verschobenen Daten dem System bekannt machen.

    Wenn ich den cron ausführen will, sagt er mir .ocdata ist nicht vorhanden.

    ich habe das data-Verzeichnis nicht verlegt, es ist immer noch in WEBROOT/data.




    Zitat

    bash-5.0$ /usr/local/php74/bin/php cron.php

    Your data directory is invalid

    Ensure there is a file called ".ocdata" in the root of the data directory.

    Cannot create "data" directory

    This can usually be fixed by giving the webserver write access to the root directory. See https://docs.nextcloud.com/ser…?to=admin-dir_permissions

    Natürlich ist die Datei im data-Verzeichnis vorhanden.

    und www-data write access zu geben fällt auch weg

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE