Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

SFTP external storage cannot read RSA private key entered in the web form: “Unable to read key”

Đang mở Phù hợp với người mới
#64,702 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
75/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
javascript, nginx, php, postgresql
Lĩnh vực
backend

Hướng nghiên cứu

Xem xét biểu mẫu frontend của ứng dụng files_external cho bộ nhớ SFTP, có thể nằm trong apps/files_external/lib/Controller/GlobalStoragesController.php hoặc một mẫu liên quan. Trường nhập khóa riêng tư cần được thay đổi từ input thành textarea để bảo toàn dấu xuống dòng. Kiểm tra bằng cách tạo bộ nhớ ngoài SFTP với khóa RSA thông qua giao diện người dùng và xác minh rằng khóa được lưu trữ chính xác trong cơ sở dữ liệu.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

0. Needs triage 35-feedback bug feature: external storage
⚠️ This issue respects the following points: ⚠️
  • This is not a troubleshooting question, general support matter, or webserver/proxy problem, but likely a bug (if unsure, ask the Community Help Forum).
  • This issue is not already reported on Github OR solved at the Community Help Forum (I've searched!).
  • I'm using a maintained major version of Nextcloud Server and tested against the latest patch level. (Supported major versions and current patch levels).
  • I agree to follow Nextcloud's Code of Conduct.
  • I've tried my best to provide clear reproduction steps that someone unfamiliar with this bug could use to reproduce it.
Bug description

I'm using files_external using the RSA private key authentication method.

However, when trying to use it after the update I'm getting the error Unable to read key from phpseclib3

I believe the problem is that the private key is stored without its enters. This is because the form for inserting the private key uses an input element and not a textarea element, so the enters of the key will be lost.

Setting the private key using: ./occ -vvv files_external:config --value-from-file <mount-id> private_key ./key.pem preserves the enters and fixes the issue.

Steps to reproduce
  1. Create a new external storage
  2. Select SFTP as the storage type
  3. And RSA private key as the authentication method
  4. Set up the rest of the form further
  5. Try to open this external storage folder
  6. Check the logs and see the Unable to read key error.
Expected behavior

It should store the private key correctly so it works.

Nextcloud Server version

35

Operating system

Debian/Ubuntu

PHP engine version

PHP 8.5

Web server

Nginx

Database engine version

PostgreSQL

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": {
        "overwriteprotocol": "https",
        "htaccess.RewriteBase": "\/",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
        ],
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "allow_local_remote_servers": true,
        "default_phone_region": "NL",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "pgsql",
        "version": "35.0.0.10",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "theme": "",
        "log_type": "file",
        "logfile": "\/tmp\/nextcloud.log",
        "loglevel": 2,
        "maintenance": false,
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauth": 1,
        "mail_smtpport": "587",
        "mail_smtpauthtype": "PLAIN",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "has_rebuilt_cache": true,
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "maintenance_window_start": 1,
        "serverid": "0"
    }
}
List of activated Apps
Enabled:
  - activity: 8.0.0
  - admin_audit: 2.0.0-dev.0
  - app_api: 35.0.0
  - appstore: 2.0.0-dev.0
  - bruteforcesettings: 8.0.0
  - calendar: 6.6.1
  - circles: 35.0.0
  - cloud_federation_api: 2.0.0-dev.0
  - comments: 2.0.0-dev.0
  - contacts: 8.9.0
  - contactsinteraction: 2.0.0-dev.0
  - dashboard: 8.0.0-dev.0
  - dav: 2.0.0-dev.1
  - federatedfilesharing: 2.0.0-dev.1
  - federation: 2.0.0-dev.0
  - files: 3.0.0-dev.0
  - files_downloadlimit: 5.3.0
  - files_external: 2.0.0-dev.0
  - files_lock: 35.0.0
  - files_pdfviewer: 8.0.0
  - files_reminders: 2.0.0-dev.0
  - files_sharing: 2.0.0-dev.1
  - files_trashbin: 2.0.0-dev.0
  - files_versions: 2.0.0-dev.0
  - firstrunwizard: 8.0.0
  - logreader: 8.0.0
  - lookup_server_connector: 2.0.0-dev.0
  - nextcloud_announcements: 7.0.0
  - notes: 6.1.0
  - notifications: 8.0.0
  - oauth2: 2.0.0-dev.0
  - office: 1.1.0
  - password_policy: 7.0.0
  - photos: 8.0.0
  - privacy: 7.0.0
  - profile: 2.0.0-dev.0
  - provisioning_api: 2.0.0-dev.0
  - recommendations: 8.0.0
  - related_resources: 6.0.0
  - richdocuments: 12.0.0
  - serverinfo: 7.0.0
  - settings: 2.0.0-dev.0
  - sharebymail: 2.0.0-dev.0
  - sharing: 1.0.4
  - support: 7.0.0
  - survey_client: 7.0.0
  - suspicious_login: 13.0.0
  - systemtags: 2.0.0-dev.0
  - text: 9.0.0
  - theming: 3.0.0-dev.0
  - twofactor_backupcodes: 2.0.0-dev.0
  - twofactor_nextcloud_notification: 9.0.0
  - twofactor_totp: 17.1.0
  - twofactor_webauthn: 2.7.1
  - updatenotification: 2.0.0-dev.0
  - user_oidc: 8.11.0
  - user_status: 2.0.0-dev.0
  - viewer: 8.0.0
  - weather_status: 2.0.0-dev.0
  - webhook_listeners: 2.0.0-dev.0
  - workflowengine: 3.0.0-dev.0
Disabled:
  - carnet: 0.25.13 (installed 0.25.13)
  - encryption: 3.0.0-dev.0
  - files_antivirus: 6.3.0 (installed 6.3.0)
  - previewgenerator: 5.13.0 (installed 5.13.0)
  - sharelisting: 1.3.0 (installed 1.3.0)
  - tasks: 0.18.0 (installed 0.18.0)
  - user_ldap: 2.0.0-dev.0
Nextcloud Signing status
No errors have been found.
Nextcloud Logs
{
	"reqId": "hzaIhqkFWcPeo0nTPRi7",
	"level": 2,
	"time": "2026-09-23T18:48:07+00:00",
	"remoteAddr": "2001:4c3c:7300:48de:4691:8e78:5b95:1791",
	"user": "jeroen",
	"app": "no app in context",
	"method": "PROPFIND",
	"url": "/remote.php/dav/files/jeroen/",
	"scriptName": "/remote.php",
	"message": "Error while getting quota info, using root quota",
	"userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:156.0) Gecko/20100101 Firefox/156.0",
	"version": "35.0.0.10",
	"exception": {
		"Exception": "OCP\\Files\\StorageNotAvailableException",
		"Message": "Unable to read key",
		"Code": 0,
		"Trace": [
			{
				"file": "/var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php",
				"line": 323,
				"function": "getAvailability",
				"class": "OC\\Files\\Storage\\FailedStorage",
				"type": "->",
				"args": []
			},
			{
				"file": "/var/www/html/lib/private/Files/Storage/Wrapper/Availability.php",
				"line": 61,
				"function": "getAvailability",
				"class": "OC\\Files\\Storage\\Wrapper\\Wrapper",
				"type": "->",
				"args": []
			},
			{
				"file": "/var/www/html/lib/private/Files/Storage/Wrapper/Availability.php",
				"line": 74,
				"function": "isAvailable",
				"class": "OC\\Files\\Storage\\Wrapper\\Availability",
				"type": "->",
				"args": []
			},
			{
				"file": "/var/www/html/lib/private/Files/Storage/Wrapper/Availability.php",
				"line": 83,
				"function": "checkAvailability",
				"class": "OC\\Files\\Storage\\Wrapper\\Availability",
				"type": "->",
				"args": []
			},
			{
				"file": "/var/www/html/lib/private/Files/Storage/Wrapper/Availability.php",
				"line": 217,
				"function": "handleAvailability",
				"class": "OC\\Files\\Storage\\Wrapper\\Availability",
				"type": "->",
				"args": [
					"free_space",
					""
				]
			},
			{
				"file": "/var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php",
				"line": 186,
				"function": "free_space",
				"class": "OC\\Files\\Storage\\Wrapper\\Availability",
				"type": "->",
				"args": [
					""
				]
			},
			{
				"file": "/var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php",
				"line": 186,
				"function": "free_space",
				"class": "OC\\Files\\Storage\\Wrapper\\Wrapper",
				"type": "->",
				"args": [
					""
				]
			},
			{
				"file": "/var/www/html/lib/private/legacy/OC_Helper.php",
				"line": 231,
				"function": "free_space",
				"class": "OC\\Files\\Storage\\Wrapper\\Wrapper",
				"type": "->",
				"args": [
					""
				]
			},
			{
				"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php",
				"line": 349,
				"function": "getStorageInfo",
				"class": "OC_Helper",
				"type": "::",
				"args": [
					"/home-Jeroen",
					{
						"__class__": "OC\\Files\\Node\\Folder"
					},
					false
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
				"line": 770,
				"function": "getQuotaInfo",
				"class": "OCA\\DAV\\Connector\\Sabre\\Directory",
				"type": "->",
				"args": []
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/PropFind.php",
				"line": 95,
				"function": "{closure:Sabre\\DAV\\CorePlugin::propFind():768}",
				"class": "Sabre\\DAV\\CorePlugin",
				"type": "->",
				"args": [
					"*** sensitive parameters replaced ***"
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
				"line": 768,
				"function": "handle",
				"class": "Sabre\\DAV\\PropFind",
				"type": "->",
				"args": [
					"{DAV:}quota-available-bytes",
					{
						"__class__": "Closure"
					}
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
				"line": 89,
				"function": "propFind",
				"class": "Sabre\\DAV\\CorePlugin",
				"type": "->",
				"args": [
					{
						"__class__": "Sabre\\DAV\\PropFind"
					},
					{
						"__class__": "OCA\\DAV\\Connector\\Sabre\\Directory"
					}
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
				"line": 1052,
				"function": "emit",
				"class": "Sabre\\DAV\\Server",
				"type": "->",
				"args": [
					"propFind",
					[
						{
							"__class__": "Sabre\\DAV\\PropFind"
						},
						{
							"__class__": "OCA\\DAV\\Connector\\Sabre\\Directory"
						}
					]
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
				"line": 984,
				"function": "getPropertiesByNode",
				"class": "Sabre\\DAV\\Server",
				"type": "->",
				"args": [
					{
						"__class__": "Sabre\\DAV\\PropFind"
					},
					{
						"__class__": "OCA\\DAV\\Connector\\Sabre\\Directory"
					}
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
				"line": 1664,
				"function": "getPropertiesIteratorForPath",
				"class": "Sabre\\DAV\\Server",
				"type": "->",
				"args": [
					"files/jeroen",
					[
						"{DAV:}getcontentlength",
						"{DAV:}getcontenttype",
						"{DAV:}getetag",
						"{DAV:}getlastmodified",
						"{DAV:}creationdate",
						"And 33 more entries, set log level to debug to see all entries"
					],
					1
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
				"line": 1649,
				"function": "writeMultiStatus",
				"class": "Sabre\\DAV\\Server",
				"type": "->",
				"args": [
					{
						"__class__": "Sabre\\Xml\\Writer",
						"elementMap": [],
						"contextUri": "/remote.php/dav/",
						"namespaceMap": {
							"DAV:": "d",
							"http://sabredav.org/ns": "s",
							"http://owncloud.org/ns": "oc",
							"http://nextcloud.org/ns": "nc"
						},
						"classMap": []
					},
					{
						"__class__": "Generator"
					},
					false
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
				"line": 346,
				"function": "generateMultiStatus",
				"class": "Sabre\\DAV\\Server",
				"type": "->",
				"args": [
					{
						"__class__": "Generator"
					},
					false
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
				"line": 89,
				"function": "httpPropFind",
				"class": "Sabre\\DAV\\CorePlugin",
				"type": "->",
				"args": [
					{
						"__class__": "Sabre\\HTTP\\Request"
					},
					{
						"__class__": "Sabre\\HTTP\\Response"
					}
				]
			},
			{
				"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
				"line": 472,
				"function": "emit",
				"class": "Sabre\\DAV\\Server",
				"type": "->",
				"args": [
					"method:PROPFIND",
					[
						{
							"__class__": "Sabre\\HTTP\\Request"
						},
						{
							"__class__": "Sabre\\HTTP\\Response"
						}
					]
				]
			},
			{
				"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Server.php",
				"line": 216,
				"function": "invokeMethod",
				"class": "Sabre\\DAV\\Server",
				"type": "->",
				"args": [
					{
						"__class__": "Sabre\\HTTP\\Request"
					},
					{
						"__class__": "Sabre\\HTTP\\Response"
					}
				]
			},
			{
				"file": "/var/www/html/apps/dav/lib/Server.php",
				"line": 436,
				"function": "start",
				"class": "OCA\\DAV\\Connector\\Sabre\\Server",
				"type": "->",
				"args": []
			},
			{
				"file": "/var/www/html/apps/dav/appinfo/v2/remote.php",
				"line": 25,
				"function": "exec",
				"class": "OCA\\DAV\\Server",
				"type": "->",
				"args": []
			},
			{
				"file": "/var/www/html/remote.php",
				"line": 158,
				"args": [
					"/var/www/html/apps/dav/appinfo/v2/remote.php"
				],
				"function": "require"
			},
			{
				"file": "/var/www/html/lib/OC.php",
				"line": 1397,
				"function": "{closure:/var/www/html/remote.php:102}",
				"args": [
					"*** sensitive parameters replaced ***"
				]
			},
			{
				"file": "/var/www/html/remote.php",
				"line": 102,
				"function": "handleRequests",
				"class": "OC",
				"type": "::",
				"args": [
					{
						"__class__": "Closure"
					}
				]
			}
		],
		"File": "/var/www/html/lib/private/Files/Storage/FailedStorage.php",
		"Line": 225,
		"Hint": "Storage is temporarily not available",
		"Previous": {
			"Exception": "OCP\\Files\\StorageNotAvailableException",
			"Message": "Unable to read key",
			"Code": 0,
			"Trace": [
				{
					"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
					"line": 124,
					"function": "getAvailability",
					"class": "OC\\Files\\Storage\\FailedStorage",
					"type": "->",
					"args": []
				},
				{
					"function": "{closure:OCA\\Files_External\\Config\\ConfigAdapter::getAvailableStorages():122}",
					"class": "OCA\\Files_External\\Config\\ConfigAdapter",
					"type": "->",
					"args": [
						"*** sensitive parameters replaced ***"
					]
				},
				{
					"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
					"line": 122,
					"function": "array_map",
					"args": [
						{
							"__class__": "Closure"
						},
						{
							"6": "*** sensitive parameters replaced ***",
							"7": "*** sensitive parameters replaced ***",
							"8": "*** sensitive parameters replaced ***",
							"14": "*** sensitive parameters replaced ***"
						},
						{
							"6": "*** sensitive parameters replaced ***",
							"7": "*** sensitive parameters replaced ***",
							"8": "*** sensitive parameters replaced ***",
							"14": "*** sensitive parameters replaced ***"
						}
					]
				},
				{
					"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
					"line": 144,
					"function": "getAvailableStorages",
					"class": "OCA\\Files_External\\Config\\ConfigAdapter",
					"type": "->",
					"args": [
						{
							"6": "*** sensitive parameters replaced ***",
							"7": "*** sensitive parameters replaced ***",
							"8": "*** sensitive parameters replaced ***",
							"14": "*** sensitive parameters replaced ***"
						},
						{
							"__class__": "OC\\User\\User"
						}
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/Config/MountProviderCollection.php",
					"line": 62,
					"function": "getMountsForUser",
					"class": "OCA\\Files_External\\Config\\ConfigAdapter",
					"type": "->",
					"args": [
						{
							"__class__": "OC\\User\\User"
						},
						{
							"__class__": "OC\\Files\\Storage\\StorageFactory"
						}
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/Config/MountProviderCollection.php",
					"line": 177,
					"function": "getMountsFromProvider",
					"class": "OC\\Files\\Config\\MountProviderCollection",
					"type": "->",
					"args": [
						{
							"__class__": "OCA\\Files_External\\Config\\ConfigAdapter"
						},
						{
							"__class__": "OC\\User\\User"
						},
						{
							"__class__": "OC\\Files\\Storage\\StorageFactory"
						}
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/SetupManager.php",
					"line": 290,
					"function": "addMountForUser",
					"class": "OC\\Files\\Config\\MountProviderCollection",
					"type": "->",
					"args": [
						{
							"__class__": "OC\\User\\User"
						},
						{
							"__class__": "OC\\Files\\Mount\\Manager"
						},
						{
							"__class__": "Closure"
						}
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/SetupManager.php",
					"line": 415,
					"function": "{closure:OC\\Files\\SetupManager::setupForUser():289}",
					"class": "OC\\Files\\SetupManager",
					"type": "->",
					"args": [
						"*** sensitive parameters replaced ***"
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/SetupManager.php",
					"line": 289,
					"function": "setupForUserWith",
					"class": "OC\\Files\\SetupManager",
					"type": "->",
					"args": [
						{
							"__class__": "OC\\User\\User"
						},
						{
							"__class__": "Closure"
						}
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/SetupManager.php",
					"line": 501,
					"function": "setupForUser",
					"class": "OC\\Files\\SetupManager",
					"type": "->",
					"args": [
						{
							"__class__": "OC\\User\\User"
						}
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/Mount/Manager.php",
					"line": 116,
					"function": "setupForPath",
					"class": "OC\\Files\\SetupManager",
					"type": "->",
					"args": [
						"/jeroen/files",
						true
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/View.php",
					"line": 1577,
					"function": "findIn",
					"class": "OC\\Files\\Mount\\Manager",
					"type": "->",
					"args": [
						"/jeroen/files"
					]
				},
				{
					"file": "/var/www/html/lib/private/Files/Node/Folder.php",
					"line": 89,
					"function": "getDirectoryContent",
					"class": "OC\\Files\\View",
					"type": "->",
					"args": [
						"/jeroen/files",
						null,
						{
							"__class__": "OC\\Files\\Node\\LazyUserFolder"
						}
					]
				},
				{
					"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php",
					"line": 267,
					"function": "getDirectoryListing",
					"class": "OC\\Files\\Node\\Folder",
					"type": "->",
					"args": []
				},
				{
					"file": "/var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php",
					"line": 59,
					"function": "getChildren",
					"class": "OCA\\DAV\\Connector\\Sabre\\Directory",
					"type": "->",
					"args": []
				},
				{
					"file": "/var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php",
					"line": 108,
					"function": "cacheDirectory",
					"class": "OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin",
					"type": "->",
					"args": [
						{
							"__class__": "OCA\\DAV\\Files\\FilesHome"
						},
						{
							"__class__": "Sabre\\DAV\\PropFind"
						}
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
					"line": 89,
					"function": "preloadCollection",
					"class": "OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin",
					"type": "->",
					"args": [
						{
							"__class__": "Sabre\\DAV\\PropFind"
						},
						{
							"__class__": "OCA\\DAV\\Files\\FilesHome"
						}
					]
				},
				{
					"file": "/var/www/html/apps/dav/lib/Connector/Sabre/PropFindPreloadNotifyPlugin.php",
					"line": 46,
					"function": "emit",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						"preloadCollection",
						[
							{
								"__class__": "Sabre\\DAV\\PropFind"
							},
							{
								"__class__": "OCA\\DAV\\Files\\FilesHome"
							}
						]
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
					"line": 89,
					"function": "collectionPreloadNotifier",
					"class": "OCA\\DAV\\Connector\\Sabre\\PropFindPreloadNotifyPlugin",
					"type": "->",
					"args": [
						{
							"__class__": "Sabre\\DAV\\PropFind"
						},
						{
							"__class__": "OCA\\DAV\\Files\\FilesHome"
						}
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
					"line": 1052,
					"function": "emit",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						"propFind",
						[
							{
								"__class__": "Sabre\\DAV\\PropFind"
							},
							{
								"__class__": "OCA\\DAV\\Files\\FilesHome"
							}
						]
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
					"line": 984,
					"function": "getPropertiesByNode",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						{
							"__class__": "Sabre\\DAV\\PropFind"
						},
						{
							"__class__": "OCA\\DAV\\Files\\FilesHome"
						}
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
					"line": 1664,
					"function": "getPropertiesIteratorForPath",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						"files/jeroen",
						[
							"{DAV:}getcontentlength",
							"{DAV:}getcontenttype",
							"{DAV:}getetag",
							"{DAV:}getlastmodified",
							"{DAV:}creationdate",
							"And 33 more entries, set log level to debug to see all entries"
						],
						1
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
					"line": 1649,
					"function": "writeMultiStatus",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						{
							"__class__": "Sabre\\Xml\\Writer",
							"elementMap": [],
							"contextUri": "/remote.php/dav/",
							"namespaceMap": {
								"DAV:": "d",
								"http://sabredav.org/ns": "s",
								"http://owncloud.org/ns": "oc",
								"http://nextcloud.org/ns": "nc"
							},
							"classMap": []
						},
						{
							"__class__": "Generator"
						},
						false
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
					"line": 346,
					"function": "generateMultiStatus",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						{
							"__class__": "Generator"
						},
						false
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
					"line": 89,
					"function": "httpPropFind",
					"class": "Sabre\\DAV\\CorePlugin",
					"type": "->",
					"args": [
						{
							"__class__": "Sabre\\HTTP\\Request"
						},
						{
							"__class__": "Sabre\\HTTP\\Response"
						}
					]
				},
				{
					"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
					"line": 472,
					"function": "emit",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						"method:PROPFIND",
						[
							{
								"__class__": "Sabre\\HTTP\\Request"
							},
							{
								"__class__": "Sabre\\HTTP\\Response"
							}
						]
					]
				},
				{
					"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Server.php",
					"line": 216,
					"function": "invokeMethod",
					"class": "Sabre\\DAV\\Server",
					"type": "->",
					"args": [
						{
							"__class__": "Sabre\\HTTP\\Request"
						},
						{
							"__class__": "Sabre\\HTTP\\Response"
						}
					]
				},
				{
					"file": "/var/www/html/apps/dav/lib/Server.php",
					"line": 436,
					"function": "start",
					"class": "OCA\\DAV\\Connector\\Sabre\\Server",
					"type": "->",
					"args": []
				},
				{
					"file": "/var/www/html/apps/dav/appinfo/v2/remote.php",
					"line": 25,
					"function": "exec",
					"class": "OCA\\DAV\\Server",
					"type": "->",
					"args": []
				},
				{
					"file": "/var/www/html/remote.php",
					"line": 158,
					"args": [
						"/var/www/html/apps/dav/appinfo/v2/remote.php"
					],
					"function": "require"
				},
				{
					"file": "/var/www/html/lib/OC.php",
					"line": 1397,
					"function": "{closure:/var/www/html/remote.php:102}",
					"args": [
						"*** sensitive parameters replaced ***"
					]
				},
				{
					"file": "/var/www/html/remote.php",
					"line": 102,
					"function": "handleRequests",
					"class": "OC",
					"type": "::",
					"args": [
						{
							"__class__": "Closure"
						}
					]
				}
			],
			"File": "/var/www/html/lib/private/Files/Storage/FailedStorage.php",
			"Line": 225,
			"Hint": "Storage is temporarily not available",
			"Previous": {
				"Exception": "phpseclib3\\Exception\\NoKeyLoadedException",
				"Message": "Unable to read key",
				"Code": 0,
				"Trace": [
					{
						"file": "/var/www/html/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php",
						"line": 56,
						"function": "load",
						"class": "phpseclib3\\Crypt\\PublicKeyLoader",
						"type": "::",
						"args": [
							false,
							""
						]
					},
					{
						"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
						"line": 77,
						"function": "manipulateStorageConfig",
						"class": "OCA\\Files_External\\Lib\\Auth\\PublicKey\\RSAPrivateKey",
						"type": "->",
						"args": [
							"*** sensitive parameters replaced ***",
							{
								"__class__": "OC\\User\\User"
							}
						]
					},
					{
						"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
						"line": 82,
						"function": "prepareStorageConfig",
						"class": "OCA\\Files_External\\Config\\ConfigAdapter",
						"type": "->",
						"args": [
							"*** sensitive parameters replaced ***",
							{
								"__class__": "OC\\User\\User"
							}
						]
					},
					{
						"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
						"line": 111,
						"function": "constructStorageForUser",
						"class": "OCA\\Files_External\\Config\\ConfigAdapter",
						"type": "->",
						"args": [
							{
								"__class__": "OC\\User\\User"
							},
							"*** sensitive parameters replaced ***"
						]
					},
					{
						"function": "{closure:OCA\\Files_External\\Config\\ConfigAdapter::getAvailableStorages():109}",
						"class": "OCA\\Files_External\\Config\\ConfigAdapter",
						"type": "->",
						"args": [
							"*** sensitive parameters replaced ***"
						]
					},
					{
						"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
						"line": 109,
						"function": "array_map",
						"args": [
							{
								"__class__": "Closure"
							},
							{
								"6": "*** sensitive parameters replaced ***",
								"7": "*** sensitive parameters replaced ***",
								"8": "*** sensitive parameters replaced ***",
								"14": "*** sensitive parameters replaced ***"
							}
						]
					},
					{
						"file": "/var/www/html/apps/files_external/lib/Config/ConfigAdapter.php",
						"line": 144,
						"function": "getAvailableStorages",
						"class": "OCA\\Files_External\\Config\\ConfigAdapter",
						"type": "->",
						"args": [
							{
								"6": "*** sensitive parameters replaced ***",
								"7": "*** sensitive parameters replaced ***",
								"8": "*** sensitive parameters replaced ***",
								"14": "*** sensitive parameters replaced ***"
							},
							{
								"__class__": "OC\\User\\User"
							}
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/Config/MountProviderCollection.php",
						"line": 62,
						"function": "getMountsForUser",
						"class": "OCA\\Files_External\\Config\\ConfigAdapter",
						"type": "->",
						"args": [
							{
								"__class__": "OC\\User\\User"
							},
							{
								"__class__": "OC\\Files\\Storage\\StorageFactory"
							}
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/Config/MountProviderCollection.php",
						"line": 177,
						"function": "getMountsFromProvider",
						"class": "OC\\Files\\Config\\MountProviderCollection",
						"type": "->",
						"args": [
							{
								"__class__": "OCA\\Files_External\\Config\\ConfigAdapter"
							},
							{
								"__class__": "OC\\User\\User"
							},
							{
								"__class__": "OC\\Files\\Storage\\StorageFactory"
							}
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/SetupManager.php",
						"line": 290,
						"function": "addMountForUser",
						"class": "OC\\Files\\Config\\MountProviderCollection",
						"type": "->",
						"args": [
							{
								"__class__": "OC\\User\\User"
							},
							{
								"__class__": "OC\\Files\\Mount\\Manager"
							},
							{
								"__class__": "Closure"
							}
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/SetupManager.php",
						"line": 415,
						"function": "{closure:OC\\Files\\SetupManager::setupForUser():289}",
						"class": "OC\\Files\\SetupManager",
						"type": "->",
						"args": [
							"*** sensitive parameters replaced ***"
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/SetupManager.php",
						"line": 289,
						"function": "setupForUserWith",
						"class": "OC\\Files\\SetupManager",
						"type": "->",
						"args": [
							{
								"__class__": "OC\\User\\User"
							},
							{
								"__class__": "Closure"
							}
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/SetupManager.php",
						"line": 501,
						"function": "setupForUser",
						"class": "OC\\Files\\SetupManager",
						"type": "->",
						"args": [
							{
								"__class__": "OC\\User\\User"
							}
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/Mount/Manager.php",
						"line": 116,
						"function": "setupForPath",
						"class": "OC\\Files\\SetupManager",
						"type": "->",
						"args": [
							"/jeroen/files",
							true
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/View.php",
						"line": 1577,
						"function": "findIn",
						"class": "OC\\Files\\Mount\\Manager",
						"type": "->",
						"args": [
							"/jeroen/files"
						]
					},
					{
						"file": "/var/www/html/lib/private/Files/Node/Folder.php",
						"line": 89,
						"function": "getDirectoryContent",
						"class": "OC\\Files\\View",
						"type": "->",
						"args": [
							"/jeroen/files",
							null,
							{
								"__class__": "OC\\Files\\Node\\LazyUserFolder"
							}
						]
					},
					{
						"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php",
						"line": 267,
						"function": "getDirectoryListing",
						"class": "OC\\Files\\Node\\Folder",
						"type": "->",
						"args": []
					},
					{
						"file": "/var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php",
						"line": 59,
						"function": "getChildren",
						"class": "OCA\\DAV\\Connector\\Sabre\\Directory",
						"type": "->",
						"args": []
					},
					{
						"file": "/var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php",
						"line": 108,
						"function": "cacheDirectory",
						"class": "OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin",
						"type": "->",
						"args": [
							{
								"__class__": "OCA\\DAV\\Files\\FilesHome"
							},
							{
								"__class__": "Sabre\\DAV\\PropFind"
							}
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
						"line": 89,
						"function": "preloadCollection",
						"class": "OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin",
						"type": "->",
						"args": [
							{
								"__class__": "Sabre\\DAV\\PropFind"
							},
							{
								"__class__": "OCA\\DAV\\Files\\FilesHome"
							}
						]
					},
					{
						"file": "/var/www/html/apps/dav/lib/Connector/Sabre/PropFindPreloadNotifyPlugin.php",
						"line": 46,
						"function": "emit",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							"preloadCollection",
							[
								{
									"__class__": "Sabre\\DAV\\PropFind"
								},
								{
									"__class__": "OCA\\DAV\\Files\\FilesHome"
								}
							]
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
						"line": 89,
						"function": "collectionPreloadNotifier",
						"class": "OCA\\DAV\\Connector\\Sabre\\PropFindPreloadNotifyPlugin",
						"type": "->",
						"args": [
							{
								"__class__": "Sabre\\DAV\\PropFind"
							},
							{
								"__class__": "OCA\\DAV\\Files\\FilesHome"
							}
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
						"line": 1052,
						"function": "emit",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							"propFind",
							[
								{
									"__class__": "Sabre\\DAV\\PropFind"
								},
								{
									"__class__": "OCA\\DAV\\Files\\FilesHome"
								}
							]
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
						"line": 984,
						"function": "getPropertiesByNode",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							{
								"__class__": "Sabre\\DAV\\PropFind"
							},
							{
								"__class__": "OCA\\DAV\\Files\\FilesHome"
							}
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
						"line": 1664,
						"function": "getPropertiesIteratorForPath",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							"files/jeroen",
							[
								"{DAV:}getcontentlength",
								"{DAV:}getcontenttype",
								"{DAV:}getetag",
								"{DAV:}getlastmodified",
								"{DAV:}creationdate",
								"And 33 more entries, set log level to debug to see all entries"
							],
							1
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
						"line": 1649,
						"function": "writeMultiStatus",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							{
								"__class__": "Sabre\\Xml\\Writer",
								"elementMap": [],
								"contextUri": "/remote.php/dav/",
								"namespaceMap": {
									"DAV:": "d",
									"http://sabredav.org/ns": "s",
									"http://owncloud.org/ns": "oc",
									"http://nextcloud.org/ns": "nc"
								},
								"classMap": []
							},
							{
								"__class__": "Generator"
							},
							false
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
						"line": 346,
						"function": "generateMultiStatus",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							{
								"__class__": "Generator"
							},
							false
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
						"line": 89,
						"function": "httpPropFind",
						"class": "Sabre\\DAV\\CorePlugin",
						"type": "->",
						"args": [
							{
								"__class__": "Sabre\\HTTP\\Request"
							},
							{
								"__class__": "Sabre\\HTTP\\Response"
							}
						]
					},
					{
						"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
						"line": 472,
						"function": "emit",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							"method:PROPFIND",
							[
								{
									"__class__": "Sabre\\HTTP\\Request"
								},
								{
									"__class__": "Sabre\\HTTP\\Response"
								}
							]
						]
					},
					{
						"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Server.php",
						"line": 216,
						"function": "invokeMethod",
						"class": "Sabre\\DAV\\Server",
						"type": "->",
						"args": [
							{
								"__class__": "Sabre\\HTTP\\Request"
							},
							{
								"__class__": "Sabre\\HTTP\\Response"
							}
						]
					},
					{
						"file": "/var/www/html/apps/dav/lib/Server.php",
						"line": 436,
						"function": "start",
						"class": "OCA\\DAV\\Connector\\Sabre\\Server",
						"type": "->",
						"args": []
					},
					{
						"file": "/var/www/html/apps/dav/appinfo/v2/remote.php",
						"line": 25,
						"function": "exec",
						"class": "OCA\\DAV\\Server",
						"type": "->",
						"args": []
					},
					{
						"file": "/var/www/html/remote.php",
						"line": 158,
						"args": [
							"/var/www/html/apps/dav/appinfo/v2/remote.php"
						],
						"function": "require"
					},
					{
						"file": "/var/www/html/lib/OC.php",
						"line": 1397,
						"function": "{closure:/var/www/html/remote.php:102}",
						"args": [
							"*** sensitive parameters replaced ***"
						]
					},
					{
						"file": "/var/www/html/remote.php",
						"line": 102,
						"function": "handleRequests",
						"class": "OC",
						"type": "::",
						"args": [
							{
								"__class__": "Closure"
							}
						]
					}
				],
				"File": "/var/www/html/custom_apps/richdocuments/vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php",
				"Line": 64
			}
		},
		"message": "Error while getting quota info, using root quota",
		"exception": "{\"class\":\"OCP\\Files\\StorageNotAvailableException\",\"message\":\"Unable to read key\",\"code\":0,\"file\":\"/var/www/html/lib/private/Files/Storage/FailedStorage.php:225\",\"trace\":\"#0 /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php(323): OC\\Files\\Storage\\FailedStorage->getAvailability()\\n#1 /var/www/html/lib/private/Files/Storage/Wrapper/Availability.php(61): OC\\Files\\Storage\\Wrapper\\Wrapper->getAvailability()\\n#2 /var/www/html/lib/private/Files/Storage/Wrapper/Availability.php(74): OC\\Files\\Storage\\Wrapper\\Availability->isAvailable()\\n#3 /var/www/html/lib/private/Files/Storage/Wrapper/Availability.php(83): OC\\Files\\Storage\\Wrapper\\Availability->checkAvailability()\\n#4 /var/www/html/lib/private/Files/Storage/Wrapper/Availability.php(217): OC\\Files\\Storage\\Wrapper\\Availability->handleAvailability('free_space', '')\\n#5 /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php(186): OC\\Files\\Storage\\Wrapper\\Availability->free_space('')\\n#6 /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php(186): OC\\Files\\Storage\\Wrapper\\Wrapper->free_space('')\\n#7 /var/www/html/lib/private/legacy/OC_Helper.php(231): OC\\Files\\Storage\\Wrapper\\Wrapper->free_space('')\\n#8 /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php(349): OC_Helper::getStorageInfo('/home-Jeroen', Object(OC\\Files\\Node\\Folder), false)\\n#9 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(770): OCA\\DAV\\Connector\\Sabre\\Directory->getQuotaInfo()\\n#10 /var/www/html/3rdparty/sabre/dav/lib/DAV/PropFind.php(95): Sabre\\DAV\\CorePlugin->{closure:Sabre\\DAV\\CorePlugin::propFind():768}()\\n#11 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(768): Sabre\\DAV\\PropFind->handle('{DAV:}quota-ava...', Object(Closure))\\n#12 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->propFind(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Connector\\Sabre\\Directory))\\n#13 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1052): Sabre\\DAV\\Server->emit('propFind', Array)\\n#14 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(984): Sabre\\DAV\\Server->getPropertiesByNode(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Connector\\Sabre\\Directory))\\n#15 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1664): Sabre\\DAV\\Server->getPropertiesIteratorForPath('files/jeroen', Array, 1)\\n#16 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1649): Sabre\\DAV\\Server->writeMultiStatus(Object(Sabre\\Xml\\Writer), Object(Generator), false)\\n#17 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(346): Sabre\\DAV\\Server->generateMultiStatus(Object(Generator), false)\\n#18 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpPropFind(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#19 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:PROPFIND', Array)\\n#20 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(216): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#21 /var/www/html/apps/dav/lib/Server.php(436): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#22 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#23 /var/www/html/remote.php(158): require('/var/www/html/a...')\\n#24 /var/www/html/lib/OC.php(1397): {closure:/var/www/html/remote.php:102}()\\n#25 /var/www/html/remote.php(102): OC::handleRequests(Object(Closure))\\n#26 {main}\",\"previous\":{\"class\":\"OCP\\Files\\StorageNotAvailableException\",\"message\":\"Unable to read key\",\"code\":0,\"file\":\"/var/www/html/lib/private/Files/Storage/FailedStorage.php:225\",\"trace\":\"#0 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(124): OC\\Files\\Storage\\FailedStorage->getAvailability()\\n#1 [internal function]: OCA\\Files_External\\Config\\ConfigAdapter->{closure:OCA\\Files_External\\Config\\ConfigAdapter::getAvailableStorages():122}(Object(OC\\Files\\Storage\\FailedStorage), Object(OCA\\Files_External\\Lib\\StorageConfig))\\n#2 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(122): array_map(Object(Closure), Array, Array)\\n#3 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(144): OCA\\Files_External\\Config\\ConfigAdapter->getAvailableStorages(Array, Object(OC\\User\\User))\\n#4 /var/www/html/lib/private/Files/Config/MountProviderCollection.php(62): OCA\\Files_External\\Config\\ConfigAdapter->getMountsForUser(Object(OC\\User\\User), Object(OC\\Files\\Storage\\StorageFactory))\\n#5 /var/www/html/lib/private/Files/Config/MountProviderCollection.php(177): OC\\Files\\Config\\MountProviderCollection->getMountsFromProvider(Object(OCA\\Files_External\\Config\\ConfigAdapter), Object(OC\\User\\User), Object(OC\\Files\\Storage\\StorageFactory))\\n#6 /var/www/html/lib/private/Files/SetupManager.php(290): OC\\Files\\Config\\MountProviderCollection->addMountForUser(Object(OC\\User\\User), Object(OC\\Files\\Mount\\Manager), Object(Closure))\\n#7 /var/www/html/lib/private/Files/SetupManager.php(415): OC\\Files\\SetupManager->{closure:OC\\Files\\SetupManager::setupForUser():289}()\\n#8 /var/www/html/lib/private/Files/SetupManager.php(289): OC\\Files\\SetupManager->setupForUserWith(Object(OC\\User\\User), Object(Closure))\\n#9 /var/www/html/lib/private/Files/SetupManager.php(501): OC\\Files\\SetupManager->setupForUser(Object(OC\\User\\User))\\n#10 /var/www/html/lib/private/Files/Mount/Manager.php(116): OC\\Files\\SetupManager->setupForPath('/jeroen/files', true)\\n#11 /var/www/html/lib/private/Files/View.php(1577): OC\\Files\\Mount\\Manager->findIn('/jeroen/files')\\n#12 /var/www/html/lib/private/Files/Node/Folder.php(89): OC\\Files\\View->getDirectoryContent('/jeroen/files', NULL, Object(OC\\Files\\Node\\LazyUserFolder))\\n#13 /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php(267): OC\\Files\\Node\\Folder->getDirectoryListing()\\n#14 /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php(59): OCA\\DAV\\Connector\\Sabre\\Directory->getChildren()\\n#15 /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php(108): OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin->cacheDirectory(Object(OCA\\DAV\\Files\\FilesHome), Object(Sabre\\DAV\\PropFind))\\n#16 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin->preloadCollection(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Files\\FilesHome))\\n#17 /var/www/html/apps/dav/lib/Connector/Sabre/PropFindPreloadNotifyPlugin.php(46): Sabre\\DAV\\Server->emit('preloadCollecti...', Array)\\n#18 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Connector\\Sabre\\PropFindPreloadNotifyPlugin->collectionPreloadNotifier(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Files\\FilesHome))\\n#19 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1052): Sabre\\DAV\\Server->emit('propFind', Array)\\n#20 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(984): Sabre\\DAV\\Server->getPropertiesByNode(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Files\\FilesHome))\\n#21 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1664): Sabre\\DAV\\Server->getPropertiesIteratorForPath('files/jeroen', Array, 1)\\n#22 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1649): Sabre\\DAV\\Server->writeMultiStatus(Object(Sabre\\Xml\\Writer), Object(Generator), false)\\n#23 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(346): Sabre\\DAV\\Server->generateMultiStatus(Object(Generator), false)\\n#24 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpPropFind(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#25 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:PROPFIND', Array)\\n#26 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(216): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#27 /var/www/html/apps/dav/lib/Server.php(436): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#28 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#29 /var/www/html/remote.php(158): require('/var/www/html/a...')\\n#30 /var/www/html/lib/OC.php(1397): {closure:/var/www/html/remote.php:102}()\\n#31 /var/www/html/remote.php(102): OC::handleRequests(Object(Closure))\\n#32 {main}\",\"previous\":{\"class\":\"phpseclib3\\Exception\\NoKeyLoadedException\",\"message\":\"Unable to read key\",\"code\":0,\"file\":\"/var/www/html/custom_apps/richdocuments/vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php:64\",\"trace\":\"#0 /var/www/html/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php(56): phpseclib3\\Crypt\\PublicKeyLoader::load(false, '')\\n#1 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(77): OCA\\Files_External\\Lib\\Auth\\PublicKey\\RSAPrivateKey->manipulateStorageConfig(Object(OCA\\Files_External\\Lib\\StorageConfig), Object(OC\\User\\User))\\n#2 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(82): OCA\\Files_External\\Config\\ConfigAdapter->prepareStorageConfig(Object(OCA\\Files_External\\Lib\\StorageConfig), Object(OC\\User\\User))\\n#3 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(111): OCA\\Files_External\\Config\\ConfigAdapter->constructStorageForUser(Object(OC\\User\\User), Object(OCA\\Files_External\\Lib\\StorageConfig))\\n#4 [internal function]: OCA\\Files_External\\Config\\ConfigAdapter->{closure:OCA\\Files_External\\Config\\ConfigAdapter::getAvailableStorages():109}(Object(OCA\\Files_External\\Lib\\StorageConfig))\\n#5 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(109): array_map(Object(Closure), Array)\\n#6 /var/www/html/apps/files_external/lib/Config/ConfigAdapter.php(144): OCA\\Files_External\\Config\\ConfigAdapter->getAvailableStorages(Array, Object(OC\\User\\User))\\n#7 /var/www/html/lib/private/Files/Config/MountProviderCollection.php(62): OCA\\Files_External\\Config\\ConfigAdapter->getMountsForUser(Object(OC\\User\\User), Object(OC\\Files\\Storage\\StorageFactory))\\n#8 /var/www/html/lib/private/Files/Config/MountProviderCollection.php(177): OC\\Files\\Config\\MountProviderCollection->getMountsFromProvider(Object(OCA\\Files_External\\Config\\ConfigAdapter), Object(OC\\User\\User), Object(OC\\Files\\Storage\\StorageFactory))\\n#9 /var/www/html/lib/private/Files/SetupManager.php(290): OC\\Files\\Config\\MountProviderCollection->addMountForUser(Object(OC\\User\\User), Object(OC\\Files\\Mount\\Manager), Object(Closure))\\n#10 /var/www/html/lib/private/Files/SetupManager.php(415): OC\\Files\\SetupManager->{closure:OC\\Files\\SetupManager::setupForUser():289}()\\n#11 /var/www/html/lib/private/Files/SetupManager.php(289): OC\\Files\\SetupManager->setupForUserWith(Object(OC\\User\\User), Object(Closure))\\n#12 /var/www/html/lib/private/Files/SetupManager.php(501): OC\\Files\\SetupManager->setupForUser(Object(OC\\User\\User))\\n#13 /var/www/html/lib/private/Files/Mount/Manager.php(116): OC\\Files\\SetupManager->setupForPath('/jeroen/files', true)\\n#14 /var/www/html/lib/private/Files/View.php(1577): OC\\Files\\Mount\\Manager->findIn('/jeroen/files')\\n#15 /var/www/html/lib/private/Files/Node/Folder.php(89): OC\\Files\\View->getDirectoryContent('/jeroen/files', NULL, Object(OC\\Files\\Node\\LazyUserFolder))\\n#16 /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php(267): OC\\Files\\Node\\Folder->getDirectoryListing()\\n#17 /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php(59): OCA\\DAV\\Connector\\Sabre\\Directory->getChildren()\\n#18 /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php(108): OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin->cacheDirectory(Object(OCA\\DAV\\Files\\FilesHome), Object(Sabre\\DAV\\PropFind))\\n#19 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Connector\\Sabre\\CommentPropertiesPlugin->preloadCollection(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Files\\FilesHome))\\n#20 /var/www/html/apps/dav/lib/Connector/Sabre/PropFindPreloadNotifyPlugin.php(46): Sabre\\DAV\\Server->emit('preloadCollecti...', Array)\\n#21 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Connector\\Sabre\\PropFindPreloadNotifyPlugin->collectionPreloadNotifier(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Files\\FilesHome))\\n#22 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1052): Sabre\\DAV\\Server->emit('propFind', Array)\\n#23 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(984): Sabre\\DAV\\Server->getPropertiesByNode(Object(Sabre\\DAV\\PropFind), Object(OCA\\DAV\\Files\\FilesHome))\\n#24 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1664): Sabre\\DAV\\Server->getPropertiesIteratorForPath('files/jeroen', Array, 1)\\n#25 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1649): Sabre\\DAV\\Server->writeMultiStatus(Object(Sabre\\Xml\\Writer), Object(Generator), false)\\n#26 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(346): Sabre\\DAV\\Server->generateMultiStatus(Object(Generator), false)\\n#27 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpPropFind(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#28 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:PROPFIND', Array)\\n#29 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(216): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#30 /var/www/html/apps/dav/lib/Server.php(436): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#31 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#32 /var/www/html/remote.php(158): require('/var/www/html/a...')\\n#33 /var/www/html/lib/OC.php(1397): {closure:/var/www/html/remote.php:102}()\\n#34 /var/www/html/remote.php(102): OC::handleRequests(Object(Closure))\\n#35 {main}\"}}}",
		"CustomMessage": "Error while getting quota info, using root quota"
	},
	"id": "6ab41eeccec45"
}
Additional info

No response

Ngôn ngữ chính
PHP
Star
37.1k
Fork
5.3k
Merge trung bình
2 ngày 3 giờ
Pull request đã merge (30 ngày)
717

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của nextcloud/server

Tất cả issue của nextcloud/server

Issue tương tự

Thêm issue về PHP

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.