Fatal Error: "Access to undeclared static property OC::$VERSION_MTIME" when upgrading 27.0 → 27.1

When I attempt to upgrade my existing Nextcloud 27.0.2 (working fine) with Nextcloud 27.1.3, the upgrade fails.

The error is:

Error: Access to undeclared static property OC::$VERSION_MTIME in /srv/nextcloud/html/lib/private/legacy/OC_Util.php:331

`occ upgrade` and output stack trace ```text $ php /srv/nextcloud/html/occ upgrade --no-interaction […] An unhandled exception has been thrown: Error: Access to undeclared static property OC::$VERSION_MTIME in /srv/nextcloud/html/lib/private/legacy/OC_Util.php:331 Stack trace: #0 /srv/nextcloud/html/lib/private/legacy/OC_Util.php(280): OC_Util::loadVersion() #1 /srv/nextcloud/html/lib/private/Server.php(742): OC_Util::getVersion() #2 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\Server->OC\{closure}() #3 /srv/nextcloud/html/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}() #4 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet() #5 /srv/nextcloud/html/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query() #6 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query() #7 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(193): OC\AppFramework\Utility\SimpleContainer->get() #8 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}() #9 /srv/nextcloud/html/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}() #10 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet() #11 /srv/nextcloud/html/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query() #12 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query() #13 /srv/nextcloud/html/lib/private/Server.php(1115): OC\AppFramework\Utility\SimpleContainer->get() #14 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\Server->OC\{closure}() #15 /srv/nextcloud/html/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}() #16 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet() #17 /srv/nextcloud/html/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query() #18 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query() #19 /srv/nextcloud/html/lib/private/Server.php(2067): OC\AppFramework\Utility\SimpleContainer->get() #20 /srv/nextcloud/html/lib/private/Files/View.php(106): OC\Server->getLockingProvider() #21 /srv/nextcloud/html/lib/private/Server.php(467): OC\Files\View->__construct() #22 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\Server->OC\{closure}() #23 /srv/nextcloud/html/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}() #24 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet() #25 /srv/nextcloud/html/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query() #26 /srv/nextcloud/html/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query() #27 /srv/nextcloud/html/lib/private/Server.php(1469): OC\AppFramework\Utility\SimpleContainer->get() #28 /srv/nextcloud/html/lib/base.php(635): OC\Server->boot() #29 /srv/nextcloud/html/lib/base.php(1196): OC::init() #30 /srv/nextcloud/html/console.php(48): require_once('...') #31 /srv/nextcloud/html/occ(11): require_once('...') #32 {main} ```

I have tried this with every version from 27.1.3, backward (27.1.2, 27.1.1, 27.1.0) and all failed as described above. The upgrade succeeded only when I went back to Nextcloud version 27.0.2.

How do I ensure the php occ upgrade command will succeed when upgrading across minor release?

Server configuration detail

Operating system: Linux 5.10.0-23-amd64 #1 SMP Debian 5.10.179-2 (2023-07-14) x86_64

Webserver: Apache/2.4.57 (Debian) (apache2handler)

Database: pgsql PostgreSQL 15.3 (Debian 15.3-0+deb12u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit

PHP version: 8.2.7

Modules loaded: Core, date, libxml, openssl, pcre, zlib, filter, hash, json, random, Reflection, SPL, session, standard, sodium, apache2handler, PDO, xml, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, iconv, intl, exif, pdo_pgsql, pgsql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, zip, Zend OPcache

Nextcloud version: 27.0.2 - 27.0.2.1

Updated from an older Nextcloud/ownCloud or fresh install: Attempting to upgrade to 27.1

Where did you install Nextcloud from: Index of /server/releases

List of activated apps
Enabled:
 - activity: 2.19.0
 - calendar: 4.5.3
 - circles: 27.0.1
 - cloud_federation_api: 1.10.0
 - comments: 1.17.0
 - contacts: 5.4.2
 - contactsinteraction: 1.8.0
 - cookbook: 0.10.2
 - dashboard: 7.7.0
 - dav: 1.27.0
 - federatedfilesharing: 1.17.0
 - federation: 1.17.0
 - files: 1.22.0
 - files_pdfviewer: 2.8.0
 - files_rightclick: 1.6.0
 - files_sharing: 1.19.0
 - files_trashbin: 1.17.0
 - files_versions: 1.20.0
 - firstrunwizard: 2.16.0
 - groupfolders: 15.2.0
 - impersonate: 1.14.0
 - logreader: 2.12.0
 - lookup_server_connector: 1.15.0
 - nextcloud_announcements: 1.16.0
 - notes: 4.8.1
 - notifications: 2.15.0
 - oauth2: 1.15.1
 - password_policy: 1.17.0
 - photos: 2.3.0
 - privacy: 1.11.0
 - provisioning_api: 1.17.0
 - recommendations: 1.6.0
 - related_resources: 1.2.0
 - richdocuments: 8.2.2
 - serverinfo: 1.17.0
 - settings: 1.9.0
 - sharebymail: 1.17.0
 - support: 1.10.0
 - survey_client: 1.15.0
 - systemtags: 1.17.0
 - text: 3.8.0
 - theming: 2.2.0
 - twofactor_backupcodes: 1.16.0
 - updatenotification: 1.17.0
 - user_status: 1.7.0
 - viewer: 2.1.0
 - weather_status: 1.7.0
 - workflowengine: 2.9.0
Disabled:
 - admin_audit
 - bruteforcesettings
 - encryption
 - files_external
 - files_reminders
 - suspicious_login
 - twofactor_totp
 - user_ldap
Configuration (config/config.php)
{
    "passwordsalt": "***REMOVED SENSITIVE VALUE***",
    "secret": "***REMOVED SENSITIVE VALUE***",
    "mail_from_address": "***REMOVED SENSITIVE VALUE***",
    "mail_domain": "***REMOVED SENSITIVE VALUE***",
    "mail_send_plaintext_only": true,
    "trusted_domains": [
        "fana.whitetree.org"
    ],
    "overwrite.cli.url": "https:\/\/fana.whitetree.org\/nextcloud",
    "htaccess.RewriteBase": "\/nextcloud",
    "default_language": "en",
    "default_locale": "en_AU",
    "default_phone_region": "AU",
    "log_type": "syslog",
    "logdateformat": "Y-m-d\\TH:i:sO",
    "maintenance": false,
    "datadirectory": "***REMOVED SENSITIVE VALUE***",
    "dbtype": "pgsql",
    "version": "27.0.2.1",
    "dbname": "***REMOVED SENSITIVE VALUE***",
    "dbhost": "***REMOVED SENSITIVE VALUE***",
    "dbport": "",
    "dbtableprefix": "oc_",
    "dbuser": "***REMOVED SENSITIVE VALUE***",
    "dbpassword": "***REMOVED SENSITIVE VALUE***",
    "installed": true,
    "instanceid": "***REMOVED SENSITIVE VALUE***",
    "filelocking.enabled": true,
    "memcache.locking": "\\OC\\Memcache\\Redis",
    "redis": {
        "host": "***REMOVED SENSITIVE VALUE***",
        "port": 6379,
        "timeout": 0,
        "password": "***REMOVED SENSITIVE VALUE***"
    },
    "theme": "",
    "loglevel": 2
}

Duplicate of Fatal Error when upgrade from 27.0 → 27.1: "Access to undeclared static property OC::$VERSION_MTIME"

And answered over there.