Nextcloud occ: Permission denied

  • Hallo,


    auf meinem EiWoMiSau Webspace habe ich Nextcloud am laufen und erhalte dort folgende Meldung:

    Zitat

    Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von "occ db:convert-filecache-bigint" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Einzelheiten finden Sie auf der zugehörigen Dokumentationsseite.

    Wenn mich nun aber per SSH auf die Shell verbinde, und den Befehl "occ db:convert-filecache-bigint" ausführe, erhalte ich nur ein "Permission denied" als Rückmeldung.

    Wie kann ich das Problem lösen?

    Danke.

  • Man kann den Befehl in eine PHP-Datei schreiben ins Wurzelverzeichnis von Nextcloud hochladen und dann aufrufen. Dann brauchst du nicht in die SSH, weil du da nicht die nötigen Rechte hast.

    Die PHP, die erstellt wurde, beinhaltet

    PHP
    <?phpexec("/usr/bin/php71 -d memory_limit=1024M occ db:add-missing-indices");?>

    und liegt im Hauptverzeichnis der Nextcloud-Installation.

    Zitat

    Webhosting Spezial Mini Aktion +++ Webhosting 8000 SE Aktion

    VPS 200 G8 +++ Root-Server Spring 2019

  • Moin

    Nachdem Du ein Backup deiner Nextcloud Datenbank gemacht hast.


    Code
    php occ db:convert-filecache-bigint


    Deine occ Datei hat vermutlich kein eXecutable Bit gesetzt und darf nicht ausgeführt werden.


    Wenn Du das Bit setzen darfst/gesetzt hast, gilt:

    Befehle, die nicht im Pfad liegen, müssen mit Pfadangabe gestartet werden.

    Code
    ./occ db:convert-filecache-bigint
  • Ich hatte mich vertan eben mit dem Code. Habe nochmal nachgeschaut und meine Datei gefunden.
    Ich habe folgendes als PHP-Datei hochgeladen und damit funktionierte es:

    Code
    sudo -u www-data php occ db:convert-filecache-bigint

    Die Datei muss aber in das Wurzelverzeichnis der Nextcloud hochgeladen werden.

    Zitat

    Webhosting Spezial Mini Aktion +++ Webhosting 8000 SE Aktion

    VPS 200 G8 +++ Root-Server Spring 2019

  • Ich hatte mich vertan eben mit dem Code. Habe nochmal nachgeschaut und meine Datei gefunden.
    Ich habe folgendes als PHP-Datei hochgeladen und damit funktionierte es:

    Code
    sudo -u www-data php occ db:convert-filecache-bigint

    Die Datei muss aber in das Wurzelverzeichnis der Nextcloud hochgeladen werden.

    Das wird so aber nicht im Webhosting funktionieren. Die Lösung von Mordor scheint mir die richtige zu sein.


    LG

    Alex

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Das wird so aber nicht im Webhosting funktionieren. Die Lösung von Mordor scheint mir die richtige zu sein.


    LG

    Alex

    Bei mir hat es auf dem Webhosting genau so funktioniert. Auf dem Server habe ich es über die Konsole gemacht.

    Zitat

    Webhosting Spezial Mini Aktion +++ Webhosting 8000 SE Aktion

    VPS 200 G8 +++ Root-Server Spring 2019

  • Bei mir hat es auf dem Webhosting genau so funktioniert. Auf dem Server habe ich es über die Konsole gemacht.

    EiWoMiSau per SSH:

    Code
    bash-4.3$ sudo
    bash: sudo: Kommando nicht gefunden.

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Sorry!
    Ihr habt mit Sudo recht.
    Ich hatte einen Beitrag zu diesem Thema gefunden. Leider finde ich ihn nicht mehr.
    Dort war der richtige Befehl für die PHP-Datei angegeben. Und mit dem klappte es damals.
    Sollte ich den Artikel noch mal finden, werde ich mich noch mal melden.

    Zitat

    Webhosting Spezial Mini Aktion +++ Webhosting 8000 SE Aktion

    VPS 200 G8 +++ Root-Server Spring 2019

  • Oder direkt über die Datenbank mittels phpmyadmin:


    Hello,

    queries to run for fixing the issues:

    Code
    ALTER TABLE `oc_share` ADD KEY `owner_index` (`uid_owner`) USING BTREE;
    ALTER TABLE `oc_share` ADD KEY `initiator_index` (`uid_initiator`) USING BTREE;

    I updated my system to NC15 and still trying to fix some performance issues. I will write down my findings since the system is running.

    Zitat

    Webhosting Spezial Mini Aktion +++ Webhosting 8000 SE Aktion

    VPS 200 G8 +++ Root-Server Spring 2019

  • ....den Befehl "occ db:convert-filecache-bigint" ausführe, erhalte ich nur ein "Permission denied" als Rückmeldung.

    Eventuell fehlt occ einfach die Berechtigung zur Ausführung. Per ssh in das Verzeichnis gehen wo die occ Datei liegt und folgenden Befehlchmod +x occ ausführen und dann

    nochmal occ db:convert-filecache-bigintausführen, dies sollte jetzt ohne eine „Permission denied“ Meldung durchlaufen.

  • Die occ Datei bei Nextcloud ist eine PHP Datei und muss daher mittels PHP ausgeführt werden. Ich kenne jetzt den Pfad von PHP im Shared Webhosting bei netcup nicht aber irgendwas mit /usr/local/php72/bin/php dürfte es schon sein. Dazu müsstest du auch die Berechtigung haben, da die Datei dir gehört und du sie mit deinem User ausführst. Ansonsten würde auch PHP hinterm Webserver streiken.

  • Sorry, ich hatte mich jetzt einige Zeit nicht mehr mit dem Thema beschäftigt.

    Der Hinweis von DanielG hat zum Ziel geführt.


    Code: config.php
    'datadirectory' => ((php_sapi_name() != 'cli') ? '/var/www/vhosts/hostingxxxx.afxxx.netcup.net' : '') . '/httpdocs/data',


    /usr/local/php73/bin/php ./occ db:convert-filecache-bigint


    Danke an alle für die Unterstützung.

  • Hallo erst einmal (dies ist mein erster Post in diesem Forum :D)


    ich hätte dazu noch einen kleinen Tipp:

    Nachdem ich mich selbst etwas damit rumgeärgert hab und auch bei mir der Lösungsvorschlag funktioniert hat - allerdings immer nur so lange bis z.B. durch ein

    occ maintenance:mode --on/--off

    oder sonstiges die config.php geändert hat (und dort das datadirectory auf das grad bekannte gesetzt wurde), dachte ich mir, dass das irgendwie eleganter gehen muss, ohne jedes Mal danach die config.php händisch ändern zu müssen.


    Dabei bin ich auf einen Abschnitt in der Nextcloud Doku gestolpert. Und zwar kann man ganz einfach wie hier beschrieben:

    Nextcloud configuration » Configuration Parameters » Multiple config.php file

    im config-Ordner eine Datei anlegen und darin beliebige Parameter festlegen, welche die Werte in der config.php dann überschreiben.


    Ich habe nun z.B. eine

    datadirectory.config.php (Name völlig egal, muss nur auf .config.php enden) mit dem Inhalt

    PHP
    <?php
    $CONFIG = array (
      'datadirectory' => ((php_sapi_name() != 'cli') ? '/var/www/vhosts/hostingxxxx.afxxx.netcup.net' : '') . '/httpdocs/data',
    );

    erstellt und kann nun wunderbar z.B.

    /usr/local/php72/bin/php occ maintenance:mode --on/--off

    oder ähnliches benutzen und weiterhin danach sowohl über das CLI als auch über's Web auf die Nextcloud zugreifen. :)


    Ich dachte nur, ich werfe die Info mal hier rein, falls jemand sich mit dem gleichen Problem rumärgert.