I have really bad troubles upgrading my Nextcloud instance. My provider messed up the PHP config recently so my Nextcloud stopped working suddenly. I had a really hard time to make sure it’s not my own fault and convince the provider of this. Finally i got my NC 16.0.9 to work again. I found out that version 16 is not longer supported so I tried to upgrade my Nextcloud to a recent version afterwards.
First I installed the latest build of 16 (16.0.11). Using the web updater didn’t work. I had to manually replace the files and could use the web updater afterwards to update the database.
That having done i proceeded to install the latest version 17 (17.0.8). The web updater downloaded the files and swapped them. I would have expected the page where I am prompted to upgrade the database. Instead I received a “HTTP ERROR 500”.
Thats when I started researching again but had no luck so far. Some users stated that they had a similar problem using the web updater and they then used the occ command. So I tried that as well. Unfortunately I can’t get it to work. Bash uses PHP 5 something by default so i have to pick the right PHP version. No matter what i want to execute with occ it always tells me it ‘cannot create “data” directory’. This is what it looks like:
bash-4.3$ /opt/plesk/php/7.1/bin/php occ upgrade The current PHP memory limit is below the recommended value of 512MB. Nextcloud or one of the apps require upgrade - only a limited number of commands are available You may use your browser or the occ upgrade command to do the upgrade Cannot create "data" directory This can usually be fixed by giving the webserver write access to the root directory. See https://docs.nextcloud.com/server/17/go.php?to=admin-dir_permissions An unhandled exception has been thrown: Exception: Environment not properly prepared. in /httpdocs/nc.***.de/nextcloud/lib/private/Console/Application.php:166 Stack trace: #0 /httpdocs/nc.***.de/nextcloud/console.php(96): OC\Console\Application->loadCommands(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #1 /httpdocs/nc.***.de/nextcloud/occ(11): require_once('/httpdocs/nc.**...')
My data directory is not in the nextcloud root dir. It is beside the nextcloud directory.
Nextcloud root: /httpdocs/nc..de/nextcloud/
Nextcloud data: /httpdocs/nc..de/data/
The data dir is correctly configured in the config file. It did work in nc16. The line in the config file is:
‘datadirectory’ => ‘/var/www/vhosts/.de/httpdocs/nc..de/data’,
As I only have limited access to the console I only have access to files below /var/www/vhosts/***.de/. Unfortunately my provider mounted this path as my root. So when I try to change directory to the path given in the config file I get a “no such file or directory”.
The data directory has the Permission 770 having the www-user as owner and the www-group.
I tried my luck swapping the PHP versions to get the web updater working but even that didn’t work. (I tried PHP 7.1.33, 7.2.32, 7.3.20 and 7.4.8.)
Does anyone have an Idea how to fix this? I really hope so otherwise I’m stuck to nc16 which I think I have to shutdown due to the high security risks. So I keep my fingers crossed.
If you need any details that I didn’t provide feel free to ask. As my provider only gives limited access I unfortunately don’t have all the details.
Nextcloud version: Database 16.0.11, Files 17.0.8
Operating system and version: unknown
Apache or nginx version (eg, Apache 2.4.25): unknown
PHP version (eg, 7.1): 7.1.33
Is this the first time you’ve seen this error? : Y
The output of your config.php file in
/path/to/nextcloud (make sure you remove any identifiable information!):
<?php $CONFIG = array ( 'instanceid' => 'ocrhvfecjj5q', 'passwordsalt' => '***', 'secret' => '***', 'trusted_domains' => array ( 0 => 'nextcloud.***.de', 1 => 'nc.***.de', 2 => 'localhost', 3 => 'nginx', ), 'datadirectory' => '/var/www/vhosts/***.de/httpdocs/nc.***.de/data', 'overwrite.cli.url' => 'http://nc.***.de', 'dbtype' => 'mysql', 'version' => '126.96.36.199', 'dbname' => '***_nextcloud', 'dbhost' => '*.*.*.*:3306', 'dbport' => '', 'dbtableprefix' => 'oc_', 'dbuser' => '***', 'dbpassword' => '***', 'installed' => true, 'forcessl' => true, 'forceSSLforSubdomains' => true, 'maintenance' => false, 'theme' => '', 'loglevel' => 0, 'mail_from_address' => '***', 'mail_smtpmode' => 'smtp', 'mail_smtpauthtype' => 'LOGIN', 'mail_domain' => '***.de', 'mail_sendmailmode' => 'smtp', 'mail_smtpauth' => 1, 'mail_smtpname' => 'nextcloud@***.de', 'mail_smtppassword' => '***', 'mail_smtphost' => '***.***.com', 'mail_smtpport' => '25', 'updater.secret' => '***', );
The output of your Apache/nginx/system log in
/var/log/____: no access