Hoster wie Netcup bieten SSH Zugriff an um auch CLI Befehle auszuführen. Leider kann das zu Problemen führen wenn man in der SSH Session andere Root-Pfade hat wie wenn man die Nextcloud Instanz im Web besucht. Eine Anpassung in der config.php kann hier Abhilfe schaffen.
Config als readonly markieren
Als erster Schritt ist es wichtig die config als readonly zu markieren. Das ist notwendig, dass Nexcloud nicht auf die idee kommt die Config zu überschreiben.
<?php
$CONFIG = array (
// andere configurations optionen
'config_is_read_only' => true,
);
Danach am Ende der Datei einen CLI Switch einfügen.
if (is_cli()) {
// the CLI path of your nexcloud setup
$CONFIG['datadirectory'] = '/domain.somewhere.de/config/../data';
$CONFIG['tempdirectory'] = '/domain.somewhere.de/config/../../tmp/';
} else {
// the Web path of your nextcloud setup
$CONFIG['datadirectory'] = '/var/www/vhosts/hostingname/domain.somewhere.de/config/../data';
$CONFIG['tempdirectory'] = '/var/www/vhosts/hostingname/domain.somewhere.de/config/../../tmp/';
}
/**
* check if the callee is a CLI or WEB process
*/
function is_cli()
if (defined('STDIN')) {
return true;
}
if (empty($_SERVER['REMOTE_ADDR']) && !isset($_SERVER['HTTP_USER_AGENT']) and count($_SERVER['argv']) > 0) {
return true;
}
return false;
}
ALs letztes muss man nun schreibrechte auf die Datei entfernen. Nextcloud würde sonst jedes mal die config Datei neu schreiben und den letzten code part entfernen. Da hilft leider auch das readonly flag nicht weiter.
chmod -w config/config.php
Nun kann man jeglichen occ Befehl ausführen und auch zeitgleich die Nextcloud Instanz im Web benutzen.
Updates durchführen
Wichtig ist zu beachten: Wenn die config.php als readonly markiert ist und die Schreibrechte entfernt wurden, kann Nextcloud keinerlei updates mehr durchführen. Aus dem WEB dann auch nicht. Leider sieht man im Web und in der Konsole keine Fehlermeldungen in diese Richtung.
Um Updates durchzuführen am besten ein Backup der config.php machen.
Dann das readonly flag aus der config entfernen oder auf false setzen.
Danach das Update starten
cp config/config.php config/config-backup.php
chmod 666 config/config.php
/usr/local/php82/bin/php -d memory_limit=512M updater/updater.phar
Ist das update fertig, muss man die config.php wieder manipulieren. Dazu nicht das Backup zurück kopieren, sondern nur wieder das readonly flag auf true setzen und das Code Schnipsel mit der Pfad und CLI Identifikation am ende einfügen.