镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

[Bug]: 31.0.1 cannot access settings overview and users, wrong type returned in countUsers() function #51486

Closed

Description

@lecyril

⚠️ This issue respects the following points: ⚠️

Bug description

I upgraded from Nextcloud 30 to 31 using occ and updater.phar method.

I cannot access the /settings/admin/overview and /settings/users pages anymore: both generate systematic server errors (see below). The culprit seems to be the type returned by the countUsers function in /lib/private/User/Database.php on line 475:
return $result->fetchOne();

Changing this line to
return ($result->fetchOne() !== false) ? (int) $result->fetchOne() : false;
allowed me to retreive access to these pages (this is why the integrity check fails below)

Others are affected, see https://help.nextcloud.com/t/fresh-install-of-server-31-oc-user-database-countusers-error/218958/4

Both 31.0.0 and 31.0.1 are affected.

Steps to reproduce

1.Upgrade from Nextcloud 30 to 31
2.Log in as admin
3.Try accessing /settings/admin/overview and /settings/users

Expected behavior

These pages should not generate server errors

Nextcloud Server version

31

Operating system

Debian/Ubuntu

PHP engine version

PHP 8.2

Web server

Apache (supported)

Database engine version

MySQL

Is this bug present after an update or on a fresh install?

Upgraded to a MAJOR version (ex. 31 to 32)

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?

  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other

Configuration report

{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "***REMOVED SENSITIVE VALUE***"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "31.0.1.2",
        "overwrite.cli.url": "***REMOVED SENSITIVE VALUE***o",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "debug": false,
        "maintenance": false,
        "maintenance_window_start": 1,
        "enable_certificate_management": false,
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "theme": "",
        "trashbin_retention_obligation": "30, 31",
        "loglevel": 0,
        "updater.release.channel": "stable",
        "versions_retention_obligation": "auto",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpauth": 1,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpsecure": "ssl",
        "overwriteprotocol": "https",
        "mysql.utf8mb4": true,
        "default_phone_region": "CH",
        "app_install_overwrite": [
            "spreed"
        ]
    }
}

List of activated Apps

- activity: 4.0.0
  - app_api: 5.0.2
  - bruteforcesettings: 4.0.0
  - circles: 31.0.0
  - cloud_federation_api: 1.14.0
  - comments: 1.21.0
  - contactsinteraction: 1.12.0
  - dav: 1.33.0
  - federatedfilesharing: 1.21.0
  - federation: 1.21.0
  - files: 2.3.1
  - files_downloadlimit: 4.0.0
  - files_external: 1.23.0
  - files_pdfviewer: 4.0.0
  - files_reminders: 1.4.0
  - files_sharing: 1.23.1
  - files_trashbin: 1.21.0
  - files_versions: 1.24.0
  - logreader: 4.0.0
  - lookup_server_connector: 1.19.0
  - mail: 4.2.6
  - nextcloud_announcements: 3.0.0
  - notifications: 4.0.0
  - oauth2: 1.19.1
  - password_policy: 3.0.0
  - photos: 4.0.0-dev.1
  - privacy: 3.0.0
  - profile: 1.0.0
  - provisioning_api: 1.21.0
  - recommendations: 4.0.0
  - related_resources: 2.0.0
  - serverinfo: 3.0.0
  - settings: 1.14.0
  - sharebymail: 1.21.0
  - spreed: 21.0.1
  - support: 3.0.0
  - survey_client: 3.0.0
  - systemtags: 1.21.1
  - text: 5.0.0
  - theming: 2.6.1
  - twofactor_backupcodes: 1.20.0
  - twofactor_totp: 13.0.0-dev.0
  - updatenotification: 1.21.0
  - user_status: 1.11.0
  - viewer: 4.0.0
  - weather_status: 1.11.0
  - webhook_listeners: 1.2.0
  - workflowengine: 2.13.0
Disabled:
  - admin_audit: 1.21.0
  - dashboard: 7.11.0 (installed 6.0.0)
  - encryption: 2.19.0
  - firstrunwizard: 4.0.0 (installed 2.4.0)
  - suspicious_login: 9.0.1 (installed 1.0.0)
  - twofactor_nextcloud_notification: 5.0.0
  - user_ldap: 1.22.0

Nextcloud Signing status

Technical information
=====================
The following list covers which files have failed the integrity check. Please read
the previous linked documentation to learn more about the errors and how to fix
them.

Results
=======
- core
	- INVALID_HASH
		- lib/private/User/Database.php

Raw output
==========
Array
(
    [core] => Array
        (
            [INVALID_HASH] => Array
                (
                    [lib/private/User/Database.php] => Array
                        (
                            [expected] => abbafb9122557ac838c53e3d6efd871d4f95cebb14284232e2aa2b41b25c72dd72053ec1ef1683839e1ffa3620921759f6af4af5ee5170ad8dbd42bfdc7e9b8e
                            [current] => dd3cb7f808973a9acdc96c2d93beebb5ff6dbc973f34a619f9fadea0bba0990049432c5f6b822a75d67461b38ce01fa8d19d273900157fe893bcbe23626e6d33
                        )

                )

        )

)

Nextcloud Logs

{
  "reqId": "Z9QAHECZeDCfmi2dzm_-kQABjhk",
  "level": 3,
  "time": "2025-03-14T10:08:39+00:00",
  "remoteAddr": "185.22.110.40",
  "user": "MYADMINUSER",
  "app": "index",
  "method": "GET",
  "url": "/index.php/settings/admin/overview",
  "message": "OC\\User\\Database::countUsers(): Return value must be of type int|false, string returned in file '/home/secondes/public_html/MYDOMAIN.TLD/lib/private/User/Database.php' line 475",
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
  "version": "31.0.1.2",
  "exception": {
    "Exception": "Exception",
    "Message": "OC\\User\\Database::countUsers(): Return value must be of type int|false, string returned in file '/home/secondes/public_html/MYDOMAIN.TLD/lib/private/User/Database.php' line 475",
    "Code": 0,
    "Trace": [
      {
        "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/AppFramework/App.php",
        "line": 161,
        "function": "dispatch",
        "class": "OC\\AppFramework\\Http\\Dispatcher",
        "type": "->"
      },
      {
        "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/Route/Router.php",
        "line": 307,
        "function": "main",
        "class": "OC\\AppFramework\\App",
        "type": "::"
      },
      {
        "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/base.php",
        "line": 1022,
        "function": "match",
        "class": "OC\\Route\\Router",
        "type": "->"
      },
      {
        "file": "/home/secondes/public_html/MYDOMAIN.TLD/index.php",
        "line": 24,
        "function": "handleRequest",
        "class": "OC",
        "type": "::"
      }
    ],
    "File": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/AppFramework/Http/Dispatcher.php",
    "Line": 146,
    "Previous": {
      "Exception": "TypeError",
      "Message": "OC\\User\\Database::countUsers(): Return value must be of type int|false, string returned",
      "Code": 0,
      "Trace": [
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/User/Manager.php",
          "line": 500,
          "function": "countUsers",
          "class": "OC\\User\\Database",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/apps/updatenotification/lib/Settings/Admin.php",
          "line": 142,
          "function": "countUsersTotal",
          "class": "OC\\User\\Manager",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/apps/updatenotification/lib/Settings/Admin.php",
          "line": 79,
          "function": "isWebUpdaterRecommended",
          "class": "OCA\\UpdateNotification\\Settings\\Admin",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/apps/settings/lib/Controller/CommonSettingsTrait.php",
          "line": 128,
          "function": "getForm",
          "class": "OCA\\UpdateNotification\\Settings\\Admin",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/apps/settings/lib/Controller/CommonSettingsTrait.php",
          "line": 170,
          "function": "formatSettings",
          "class": "OCA\\Settings\\Controller\\AdminSettingsController",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/apps/settings/lib/Controller/AdminSettingsController.php",
          "line": 55,
          "function": "getIndexResponse",
          "class": "OCA\\Settings\\Controller\\AdminSettingsController",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/AppFramework/Http/Dispatcher.php",
          "line": 200,
          "function": "index",
          "class": "OCA\\Settings\\Controller\\AdminSettingsController",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/AppFramework/Http/Dispatcher.php",
          "line": 114,
          "function": "executeController",
          "class": "OC\\AppFramework\\Http\\Dispatcher",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/AppFramework/App.php",
          "line": 161,
          "function": "dispatch",
          "class": "OC\\AppFramework\\Http\\Dispatcher",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/Route/Router.php",
          "line": 307,
          "function": "main",
          "class": "OC\\AppFramework\\App",
          "type": "::"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/lib/base.php",
          "line": 1022,
          "function": "match",
          "class": "OC\\Route\\Router",
          "type": "->"
        },
        {
          "file": "/home/secondes/public_html/MYDOMAIN.TLD/index.php",
          "line": 24,
          "function": "handleRequest",
          "class": "OC",
          "type": "::"
        }
      ],
      "File": "/home/secondes/public_html/MYDOMAIN.TLD/lib/private/User/Database.php",
      "Line": 475
    },
    "message": "OC\\User\\Database::countUsers(): Return value must be of type int|false, string returned in file '/home/secondes/public_html/MYDOMAIN.TLD/lib/private/User/Database.php' line 475",
    "exception": [],
    "CustomMessage": "OC\\User\\Database::countUsers(): Return value must be of type int|false, string returned in file '/home/secondes/public_html/MYDOMAIN.TLD/lib/private/User/Database.php' line 475"
  },
  "id": "67d4057f20a4e"
}

Additional info

Thanks for your help and for your understanding, this is my first bug report!

Activity

  1. added
    0. Needs triagePending check for reproducibility or if it fits our roadmap
    on Mar 14, 2025
  2. kesselb commented on Mar 14, 2025

    @kesselb
    Contributor

    cc @nextcloud/server-backend

  3. lecyril commented on Mar 14, 2025

    @lecyril
    Author

    Just to be clear, the integrity check only fails because I implemented the workaround described in my bug report (forcing the returned type to int or false).

    If I put back the original 31.0.1 file, run occ integrity:check-core, and visit /settings/integrity/failed , I get as expected:
    No errors have been found.
    ... and cannot access /settings/admin/overview anymore

  4. Safs commented on Mar 15, 2025

    @Safs

    Same problem after update to 31. Is there option to downgrade?

  5. DJTOMATO commented on Mar 24, 2025

    @DJTOMATO

    I have the same issue in 31, new install via php or via softaculous.
    Only "General View", "Support" and "Users" will crash

  6. solracsf commented on Mar 25, 2025

    @solracsf
    Member

    Fixed in 31.0.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions