Occ returns false "not installed" errors in PHP 8

Using this Arch totorial I’m running Nginx on Arch and I get a beautiful Nextcloud web installer page asking for database info, admin user, and to auto-install the Calendar, Contacts, Talk, and Mail apps.

But… occ isn’t happy on the command line.

The modules are installed.

PHP info says they are installed.

The web installer even said they were installed, but were falsely reported as missing; rebooted the webserver, and then the web installer was ready to go.

But… occ still isn’t happy.

Is this because occ…

  1. is checking PHP requirements via some backdoor method rather than the same way the Nextcloud web installer does?
  2. does not support PHP 8 when Nextcloud does?
  3. has some other thing going on?

About occ with sudo -u: According to the tutorial mentioned, /usr/bin/occ wraps commands as a sudo user, which I think is how things should go on Arch. So, please only comment on that if you use Arch and the tutorial I mentioned.

My entire command:

# /usr/bin/occ maintenance:install --database mysql --database-name nextcloud123 --database-host localhost --database-user nextcloud123 --database-pass=Nextcloud123456 --data-dir /var/lib/nextcloud/data/

The entire error:

The current PHP memory limit is below the recommended value of 512MB.
No database drivers (sqlite, mysql, or postgresql) installed.


PHP module zip not installed.
Please ask your server administrator to install the module.

PHP module GD not installed.
Please ask your server administrator to install the module.

PHP module cURL not installed.
Please ask your server administrator to install the module.

An unhandled exception has been thrown:
Exception: Environment not properly prepared. in /usr/share/webapps/nextcloud/lib/private/Console/Application.php:168
Stack trace:
#0 /usr/share/webapps/nextcloud/console.php(99): OC\Console\Application->loadCommands(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#1 /usr/share/webapps/nextcloud/occ(11): require_once('/usr/share/weba...')