I’ve updated to NC14 and I need to run
occ db:add-missing-indices
but I am on shared hosting and don’t have shell access.
What are my options?
I’ve updated to NC14 and I need to run
occ db:add-missing-indices
but I am on shared hosting and don’t have shell access.
What are my options?
I found a work around for this, so if anyone else finds themselves in the same boat, this is one way to resolve it.
I don’t have shell access, but through c-panel I can set cron jobs, so I just set a cron job to run the command, then deleted it once I hace receieved the email with the result of the completed command.
Did the same here on “Hetzner” shared hosting in their “konsoleh” called hosting manager.
Just added a cron job with that command and ran that manually. Worked like a charm.
Could you possibly send me the cron job you used for Hetzner? Really not getting any success on it!
Same issue - other result:
I HAVE an ssh access (1&1 Webhosting) but the occ command returns following error:
Failed loading opcache.so: opcache.so: cannot open shared object file: No such file or directory
X-Powered-By: PHP/4.4.9
Content-type: text/html
Any hints???
Many thx
PHP4.4 ist wohl zu alt. Mit
php7.1 ./occ db:add-missing-indices
funktioniert es.
Danke für den Hinweis; Instanz läuft allerdings eh schon auf PHP 7.1; kein Plan woher die Referenz auf 4.4 kommt - wahrscheinlich irgendwo ein Pfad falsch gesetzt?!?
Hab’s inzwischen über die direkten SQL Statements gelöst (siehe https://github.com/nextcloud/server/issues/11491)
Hi,
ich glaube nicht unbedingt, dass der Fehler auf User-Seite liegt.
Im 1und1-Hosting gibt es einige Besonderheiten. Eine davon (und die hat es wirklich in sich) ist ein sogenanntes session limit “zum Schutz” der laufenden Instanzen in einem Hosting-Paket:
Es wird nur eine bestimmte Anzahl von quasi gleichzeitigen Zugriffen auf das gesamte (!) Paket zugelassen.
Heisst:
Wenn 50 gleichzeitige Zugriffe auf das Paket (alle Domains und Sub-Domains) erfolgen, dann kommt auf jeden Fall eine Fehlermeldung. Es zählen auch SSH-Zugriffe mit, nicht nur Web-Zugriffe.
Ich habe im Oktober 2018 in einem Pro-Paket die Grenze mit einfachstem SHTML und PHP (echo “bla” bei 23 entdeckt, offiziell waren es im Frühjahr 2018 16 sessions (da bin ich bei einem Kunden darüber gestolpert und bei der Fehlersuche beinahe wahnsinnig geworden).
Wenn der cronjob oder ein Besucher des Pakets “zufällig” die Grenze knackt, dann läuft das nicht. Das gesamte Paket ist dann für kurze Zeit lahm gelegt (error 500).
Hi,
hab gerade erst bemerkt (sry, bin kein großer Linux-Guru ), dass 1&1 in meinem Hostingpaket zwar einen SSH Zugang bietet, aber in der Shell tatsächlich PHP 4.4.9 (!!) aufruft.
Ich denke, das dürfte ein (Haupt-)grund für die Unmöglichkeit der Ausführung von occ sein.
Sudo “kennt” die abgestrippte Shell verständlicherweise auch nicht, was außerdem die Ausführung unter einem anderen User unmöglich machen dürfte. Demnach wird mir wohl der Zugang zu occ weiterhin verwehrt bleiben…
Ich würde mich mit SSH anmelden, php eintippen und dann die TAB-Taste nehmen. Anschließend erhält man per completion eine Auswahl der in der shell verfügbaren php-Versionen.
Die gewünschte Version in occ (1. Zeile) eintragen und es läuft (wahrscheinlich).
edit:
Hab nachgeschut - im Angebot ist beispielsweise php7.1-cli.
Demzufolge würde ich in occ die erste Zeile von “php” auf “php7.1-cli” ändern und es nochmals versuchen.
Jep - das war’s!! -> Also occ einfach nur mit der richtigen PHP Version aufrufen:
$ php7.1-cli occ
Mille Grazie, diri!!!
Hi @duncanmid and thanks for your message.
Could you just write us exactly the command line that you executed in CRON job?
From my experience, and at OVH’s shared hosting , it seems to me that CRON jobs only execute a file.
Thank you in advance
That’s right, so you may have to supply the full path to the occ file. Thus, for example, this, which worked in my case (without having to use the php-cli command):
/usr/local/bin/php /home/myusername/nextcloud/occ db:add-missing-indices
Hello,
please see
Hallo Maulwurf,
ich habe da einiges versucht, Klappt leider bei Hetzner nicht wie ich das denke.
/usr/local/bin/php /home/myusername/nextcloud/occ db:add-missing-indices
Kannst du mir helfen? Das wäre super. Welchen Interpreter sollte ich einstellen und wie genau blaue ich mir den Pfad bei hetzner zusammen?
Danke !
Sascha
Hallo srosner,
Die Antwort von rakekniven hilft bereits sehr.
See https://wiki.hetzner.de/index.php/KonsoleH:Cronjob-Manager#Skriptpfade
Siehe mein Bild für meine Konfiguration:
Der Skriptpfad ist wie folgt:
/usr/www/users/FTPBENUTZERNAME/NEXTCLOUDORDNER/occ befehl
Das alles ist ohne Aufrufe wie “php”, “usr/local/bin/php”, etc aufzurufen. Dafür wählt man ja im oberen Drop-Down Menü “PHP-CLI” aus. Danach den Cron-Job manuell ausführen. Lief bei mir problemlos.
Viele Grüße,
Maulwurf
Hi,
ich habe auch bei 1&1 ssh-Zugriff und mit
php7.3 ./occ db:add-missing-indices
gab es folgende Fehlermeldung:
X-Powered-By: PHP/7.3.13
Content-type: text/html; charset=UTF-8
An unhandled exception has been thrown:
TypeError: Return value of OC\AppFramework\Http\Request::getScriptName() must be of the type string, null returned in /homepages/MeinVerzeichnis/htdocs/lib/private/AppFramework/Http/Request.php:836
Stack trace:
#0 /homepages/MeinVerzeichnis/htdocs/lib/base.php(159): OC\AppFramework\Http\Request->getScriptName()
#1 /homepages/MeinVerzeichnis/htdocs/lib/base.php(582): OC::initPaths()
#2 /homepages/MeinVerzeichnis/htdocs/lib/base.php(1089): OC::init()
#3 /homepages/MeinVerzeichnis/htdocs/console.php(48): require_once('/homepages/...')
#4 /homepages/MeinVerzeichnis/htdocs/occ(10): require_once('/homepages/...')
Das sieht gar nicht soo gut aus… Was nun? Jemand eine Idee? Danke für eure Tipps im Voraus.
JamFX
You most likely have to execute
sudo -u www-data php occ db:add-missing-indices
and provide your normal user password. Don’t do this as root, but as a normal user in the nextcloud folder, which usually is
/var/www/nextcloud
Hallo jamfx,
wenn du den Befehl über SSH absetzt, befindest du dich dann im Verzeichnis /homepages/MeinVerzeichnis/htdocs/
?
Wenn ja, dann kannst du das ./ vor dem occ weg lassen. Wichtig zu wissen ist auch, ist der Benutzer mit welchem du per SSH angemeldet bist, auch gleichzeitig der Webserver Benutzer?
Wie findet man das heraus?
Verbinde dich per SSH und führe dann den folgenden Befehl aus:
ls -alh /homepages/MeinVerzeichnis/htdocs/
Der Befehl listet Dir nun den Inhalt, sowie den Benutzer und die Gruppe des Inhalts im Verzeichnis auf.
Beispiel:
# ls -alh /var/www/nextcloud/htdocs/
total 120K
drwxrwxrwx. 14 apache apache 4.0K Feb 6 11:36 .
drwxr-xr-x. 4 root root 53 Dec 19 10:40 ..
drwxr-xr-x 33 apache apache 4.0K Feb 6 11:35 3rdparty
drwxr-xr-x 47 apache apache 4.0K Feb 18 12:43 apps
-rw-r--r-- 1 apache apache 12K Feb 6 11:35 AUTHORS
drwxr-xr-x 2 apache apache 66 Feb 6 11:36 config
-rw-r--r-- 1 apache apache 3.8K Feb 6 11:35 console.php
-rw-r--r-- 1 apache apache 34K Feb 6 11:35 COPYING
drwxr-xr-x 23 apache apache 4.0K Feb 6 11:35 core
-rw-r--r-- 1 apache apache 4.9K Feb 6 11:35 cron.php
-rw-r--r-- 1 apache apache 2.6K Feb 6 11:38 .htaccess
-rw-r--r-- 1 apache apache 156 Feb 6 11:35 index.html
-rw-r--r-- 1 apache apache 3.1K Feb 6 11:36 index.php
drwxr-xr-x 6 apache apache 125 Feb 6 11:35 lib
-rw-r--r-- 1 apache apache 283 Feb 6 11:35 occ
drwxr-xr-x 2 apache apache 23 Feb 6 11:36 ocm-provider
drwxr-xr-x 2 apache apache 55 Feb 6 11:35 ocs
drwxr-xr-x 2 apache apache 23 Feb 6 11:35 ocs-provider
-rw-r--r-- 1 apache apache 2.9K Feb 6 11:36 public.php
-rw-r--r-- 1 apache apache 5.1K Feb 6 11:36 remote.php
drwxr-xr-x 4 apache apache 107 Feb 6 11:36 resources
-rw-r--r-- 1 apache apache 26 Feb 6 11:35 robots.txt
drwxr-xr-x 13 apache apache 264 Feb 6 11:35 settings
-rw-r--r-- 1 apache apache 2.3K Feb 6 11:36 status.php
drwxr-xr-x 3 apache apache 35 Feb 6 11:35 themes
drwxr-xr-x 2 apache apache 43 Oct 12 2018 updater
-rw-r--r-- 1 apache apache 101 Feb 6 11:35 .user.ini
-rw-r--r-- 1 apache apache 362 Feb 6 11:35 version.php
Im obigen Beispiel ist der Webserver Benutzer und die Gruppe apache
In diesem Fall müsste man nun den OCC Befehl wie folgt absetzen:
Vorausgesetzt man befindet sich im Verzeichnis, welches die OCC Datei beinhaltet.
sudo -u apache php7.3 occ db:add-missing-indices
EDIT: Das Thema weiter oben noch einmal näher verfolgt, es könnte auch sein, dass du php7.3-cli anstatt php7.3 benutzen musst.