nextcloud / server

☁️ Nextcloud server, a safe home for all your data
https://nextcloud.com
GNU Affero General Public License v3.0
26.71k stars 4k forks source link

[Bug]: SMB webdav Exception "Malformed state response from server", "Undefined index: attributes" #41114

Open imolb opened 2 years ago

imolb commented 2 years ago

⚠️ This issue respects the following points: ⚠️

Bug description

Files can not be synchronized from an Android device with "Nextcloud Android App" into the SMB storage location. Or alternatively files can not be moved within the SMB storage via the browser GUI. Instead the following errors are reported

webdav: Icewind\SMB\Exception\Exception: Malformed state response from server
PHP: Error: Undefined index: attributes at /var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php#155

Steps to reproduce

  1. Install nextcloud version 24.0.1 on a Debian 11 Bullseye server
  2. Install the smbclient 4.13.13 to attach SMB-shares as external storage
  3. Attach external storage backend by a SMB-share on same Debian 11 Bullseye Server
  4. Install Nextcloud Android App 3.20.3. on mobile device
  5. Configure folder for automated sync in the mobile App
  6. Put files in the configured folder on the mobile device

Instead of step 4. to 6. also a file within the SMB share could be moved in the browser GUI.

Expected behavior

The file is uploaded to Nextcloud storage.

Installation method

Manual installation

Operating system

Debian/Ubuntu

PHP engine version

PHP 7.4

Web server

Apache (supported)

Database engine version

MySQL

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

Updated to a major version (ex. 22.2.3 to 23.0.1)

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?

Configuration report

{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "nas",
            "192.168.178.2"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "24.0.1.1",
        "overwrite.cli.url": "http:\/\/nas\/nextcloud",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "memcache.local": "OC\\Memcache\\APCu",
        "maintenance": false,
        "updater.secret": "***REMOVED SENSITIVE VALUE***",
        "theme": "",
        "default_phone_region": "DE",
        "loglevel": 2
    }
}

List of activated Apps

Enabled:
  - accessibility: 1.10.0
  - activity: 2.16.0
  - bruteforcesettings: 2.4.0
  - circles: 24.0.0
  - cloud_federation_api: 1.7.0
  - comments: 1.14.0
  - contactsinteraction: 1.5.0
  - dashboard: 7.4.0
  - dav: 1.22.0
  - federatedfilesharing: 1.14.0
  - federation: 1.14.0
  - files: 1.19.0
  - files_external: 1.16.1
  - files_pdfviewer: 2.5.0
  - files_rightclick: 1.3.0
  - files_sharing: 1.16.2
  - files_trashbin: 1.14.0
  - files_versions: 1.17.0
  - files_videoplayer: 1.13.0
  - firstrunwizard: 2.13.0
  - logreader: 2.9.0
  - lookup_server_connector: 1.12.0
  - nextcloud_announcements: 1.13.0
  - notifications: 2.12.0
  - oauth2: 1.12.0
  - password_policy: 1.14.0
  - photos: 1.6.0
  - privacy: 1.8.0
  - provisioning_api: 1.14.0
  - recommendations: 1.3.0
  - serverinfo: 1.14.0
  - settings: 1.6.0
  - sharebymail: 1.14.0
  - support: 1.7.0
  - survey_client: 1.12.0
  - systemtags: 1.14.0
  - text: 3.5.1
  - theming: 1.15.0
  - twofactor_backupcodes: 1.13.0
  - updatenotification: 1.14.0
  - user_status: 1.4.0
  - viewer: 1.8.0
  - weather_status: 1.4.0
  - workflowengine: 2.6.0
Disabled:
  - admin_audit
  - encryption
  - user_ldap

Nextcloud Signing status

No errors have been found.

Nextcloud Logs

{"reqId":"FceDSTAlNuE352FOXF9n","level":3,"time":"2022-06-16T16:25:10+00:00","remoteAddr":"192.168.178.3","user":"myuser","app":"PHP","method":"MOVE","url":"/nextcloud/remote.php/dav/uploads/myuser/3459361d5ffa26fc8c8e1746e5cd1e93/.file","message":"Undefined index: attributes at /var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php#155","userAgent":"Mozilla/5.0 (Android) Nextcloud-android/3.20.3","version":"24.0.1.1","exception":{"Exception":"Error","Message":"Undefined index: attributes at /var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php#155","Code":0,"Trace":[{"file":"/var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php","line":155,"function":"onError","class":"OC\\Log\\ErrorHandler","type":"::"},{"file":"/var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php","line":217,"function":"parseStat","class":"Icewind\\SMB\\Wrapped\\Parser","type":"->"},{"file":"/var/www/nextcloud/apps/files_external/lib/Lib/Storage/SMB.php","line":193,"function":"stat","class":"Icewind\\SMB\\Wrapped\\Share","type":"->"},{"file":"/var/www/nextcloud/apps/files_external/lib/Lib/Storage/SMB.php","line":668,"function":"getFileInfo","class":"OCA\\Files_External\\Lib\\Storage\\SMB","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":227,"function":"file_exists","class":"OCA\\Files_External\\Lib\\Storage\\SMB","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":227,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Availability.php","line":244,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":227,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Availability","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1345,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1390,"function":"getCacheEntry","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/Directory.php","line":231,"function":"getFileInfo","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php","line":78,"function":"getChild","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":754,"function":"getNodeForPath","class":"Sabre\\DAV\\Tree","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":590,"function":"getCopyAndMoveInfo","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpMove","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":321,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Server.php","line":352,"function":"exec","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php","line":35,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/remote.php","line":166,"args":["/var/www/nextcloud/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/nextcloud/lib/private/Log/ErrorHandler.php","Line":92,"CustomMessage":"--"}}
{"reqId":"FceDSTAlNuE352FOXF9n","level":4,"time":"2022-06-16T16:25:10+00:00","remoteAddr":"192.168.178.3","user":"myuser","app":"webdav","method":"MOVE","url":"/nextcloud/remote.php/dav/uploads/myuser/3459361d5ffa26fc8c8e1746e5cd1e93/.file","message":"Malformed state response from server","userAgent":"Mozilla/5.0 (Android) Nextcloud-android/3.20.3","version":"24.0.1.1","exception":{"Exception":"Icewind\\SMB\\Exception\\Exception","Message":"Malformed state response from server","Code":0,"Trace":[{"file":"/var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php","line":217,"function":"parseStat","class":"Icewind\\SMB\\Wrapped\\Parser","type":"->"},{"file":"/var/www/nextcloud/apps/files_external/lib/Lib/Storage/SMB.php","line":193,"function":"stat","class":"Icewind\\SMB\\Wrapped\\Share","type":"->"},{"file":"/var/www/nextcloud/apps/files_external/lib/Lib/Storage/SMB.php","line":668,"function":"getFileInfo","class":"OCA\\Files_External\\Lib\\Storage\\SMB","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":227,"function":"file_exists","class":"OCA\\Files_External\\Lib\\Storage\\SMB","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":227,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Availability.php","line":244,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":227,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Availability","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1345,"function":"file_exists","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1390,"function":"getCacheEntry","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/Directory.php","line":231,"function":"getFileInfo","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php","line":78,"function":"getChild","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":754,"function":"getNodeForPath","class":"Sabre\\DAV\\Tree","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":590,"function":"getCopyAndMoveInfo","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpMove","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":321,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Server.php","line":352,"function":"exec","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php","line":35,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/remote.php","line":166,"args":["/var/www/nextcloud/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php","Line":157,"CustomMessage":"--"}}

Additional info

Problem arose after upgrade of nextcloud sever (major versions). Worked well before.

There is an similar bug nextcloud/server#30751 created recently also effecting the external SMB but with different error message. Bug nextcloud/server#30751 reports "Unknown error (NT_STATUS_OBJECT_NAME_INVALID)", this bug reports "Undefined index: attributes".

The problem is also mentioned in the nextcloud.com forum: https://help.nextcloud.com/t/smb-share-not-available/134928

messnerfe commented 1 year ago

Hi, I can say that updating did not fix the issue on my end. After updating my docker image (running on a raspberry pi) first from 25.0.6 to 25.0.7, and then even to 26.0.2, the issue still persists.

I'm using the official docker image and install smbclient into it:

FROM nextcloud:26

RUN set -x \
        && apt-get update \
        && apt-get install -y libmagickcore-6.q16-6-extra smbclient \
        && rm -rf /var/lib/apt/lists/*

The strange thing is that it was working just fine for me until a few weeks ago. I really don't remember doing anyhting to the server or the attached storage.

The only other thing I can think of is that maybe the phone app got an update.? I'm using Android, the app is currently at version 3.24.2.

But then again, that wouldn't explain why sometimes I can't move files from one place to another on the attached storage in the web gui (like imolb originally described), resulting in the same error message as when the phone app sync fails:

Error   webdav  Icewind\SMB\Exception\Exception: Malformed state response from server   
2023-06-02T09:00:14+0200
Error   PHP Undefined array key "attributes" at /var/www/html/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php#155   
2023-06-02T09:00:14+0200

That might have to do with the size of the source folder I try to copy the file from.? I first tried to copy a file from my "big" (~17GB) photo sync folder to another folder on the SMB-attached storage -> that failed. Then I tried to copy from a smaller folder -> that worked. I was also able to copy a file from the big folder to a location outside of the SMB attached storage just fine.

If you need additional information from me, I'll be happy to provide it.

szaimen commented 1 year ago

Hi can you also install procps as recommended in the docs: https://github.com/nextcloud/docker/blob/master/.examples/dockerfiles/smb/apache/Dockerfile

messnerfe commented 1 year ago

Like this?

FROM nextcloud:26

RUN set -x \
        && apt-get update \
        && apt-get install -y procps libmagickcore-6.q16-6-extra smbclient \
        && rm -rf /var/lib/apt/lists/*

Doesn't seem to make a difference. The procps package also seems to be installed in the container already, if I don't explicitly include it in the dockerfile.

Same result if I use the exact dockerfile you linked.

joshtrichards commented 1 year ago

The Apache Dockerfile example appears out of date.

It may work, but at best it'll be lower performing and less reliable since it uses the smbclient external binary rather than php-smbclient.

The correct approach for adding smb support appears to be in the full example from the looks of it, but it'll have to be adapted if you only want a few things:

https://github.com/nextcloud/docker/blob/master/.examples/dockerfiles/full/apache/Dockerfile

I suspect the smb one was overlooked maybe when the image base was switched to the community PHP one.

NOTE: Since the community Docker image is based on the community PHP image, just don't try to install PHP extensions by way of apt. If you do so, it'll overwrite the official PHP build in the image with Debian's. This'll effectively nullify the entire image's other configuration elements and deploy conflicting PHP versions in it. Here are the correct (but generic) instructions for adding PHP extensions to the Docker images (which appears to be used by the community Docker full dockerfile example):

https://github.com/docker-library/docs/blob/master/php/README.md#pecl-extensions

MarcS1975 commented 1 year ago

This is confusing to me. So a fileshare Application is based on a component that overlooked the most relaible and most used fileshare protocol in the entire world? Would it be possible to include smb support in the community docker image, given that this has caused major discussions in the forum for years? I am not complaining, just trying to understand the rationale and how I can help.

messnerfe commented 1 year ago

The correct approach for adding smb support appears to be in the full example from the looks of it, but it'll have to be adapted if you only want a few things: https://github.com/nextcloud/docker/blob/master/.examples/dockerfiles/full/apache/Dockerfile

Thanks for pointing me to that, I hadn't fully read the file before. So I tried it like this:

FROM nextcloud:26

RUN set -x \
        && apt-get update \
        && apt-get install -y procps libsmbclient-dev smbclient \
        && rm -rf /var/lib/apt/lists/*
RUN pecl install smbclient
RUN docker-php-ext-enable smbclient

(the smbclient apt package still seems to be required, otherwiese nextcloud complains about missing the smb backend and won't connect the storage)

Now the photo sync from phone works, the file ends up on the server, but the app still reports it as failed with "unknown error".

Similarly, when I try to copy a file from a to b on the storage via web gui, it does copy successfully, but report it as failed, sometimes without a reason, sometimes it says the target already exists (which it definitely didn't before the copy). Moving, on the other hand, seems to work fine.

imolb commented 1 year ago

Problem still exists with nextcloud 25.0.7 on Debian 11.

MarcS1975 commented 1 year ago

I confirm same issue here as this https://github.com/nextcloud/server/issues/41114. I am running 26.02 and after installing original NC community docker image and afterwards installing smbclient as described above. Still getting SMB errors:

`[files] Error: Icewind\SMB\Exception\Exception: Unknown error () for [FOLDERNAME] at <>

  1. /var/www/html/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php line 49 Icewind\SMB\Exception\Exception::unknown("Instantupload I ... e", null)
  2. /var/www/html/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php line 92 Icewind\SMB\Exception\Exception::fromMap(["Icewind\SMB\ ... "], null, "Instantupload I ... e")
  3. /var/www/html/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php line 479 Icewind\SMB\Wrapped\Parser->checkForError([" . ... "], "Instantupload I ... e")
  4. /var/www/html/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php line 178 Icewind\SMB\Wrapped\Share->parseOutput([" . ... "], "Instantupload I ... e")
  5. /var/www/html/apps/files_external/lib/Lib/Storage/SMB.php line 244 Icewind\SMB\Wrapped\Share->dir("Instantupload I ... e")
  6. /var/www/html/apps/files_external/lib/Lib/Storage/SMB.php line 631 OCA\Files_External\Lib\Storage\SMB->getFolderContents("Instantupload I ... e")
  7. /var/www/html/lib/private/Files/Storage/Wrapper/PermissionsMask.php line 157 OCA\Files_External\Lib\Storage\SMB->getDirectoryContent("Instantupload I ... e")
  8. <> OC\Files\Storage\Wrapper\PermissionsMask->getDirectoryContent("Instantupload I ... e")
  9. /var/www/html/lib/private/Files/Cache/Scanner.php line 403 iterator_to_array(["Generator"])
  10. /var/www/html/lib/private/Files/Cache/Scanner.php line 382 OC\Files\Cache\Scanner->handleChildren("Instantupload I ... e", 2, 3, 29284, true, 0)
    1. /var/www/html/lib/private/Files/Cache/Scanner.php line 385 OC\Files\Cache\Scanner->scanChildren("Instantupload I ... e", 2, 3, 29284, true)
    2. /var/www/html/lib/private/Files/Cache/Scanner.php line 333 OC\Files\Cache\Scanner->scanChildren("Instantupload Iphone 11 Pro/2023", 2, 3, 3010, true, ["httpd/unix-dir ... "])
    3. /var/www/html/lib/private/Files/Cache/Scanner.php line 529 OC\Files\Cache\Scanner->scan("Instantupload Iphone 11 Pro/2023", 2, 3)
    4. /var/www/html/lib/private/Files/Cache/Scanner.php line 541 OC\Files\Cache\Scanner->OC\Files\Cache{closure}(" sensitive parameters replaced ")
    5. /var/www/html/lib/private/Files/Cache/Scanner.php line 528 OC\Files\Cache\Scanner->runBackgroundScanJob(["Closure"], "Instantupload Iphone 11 Pro/2023")
    6. /var/www/html/lib/private/Files/Utils/Scanner.php line 182 OC\Files\Cache\Scanner->backgroundScan()
    7. /var/www/html/apps/files/lib/BackgroundJob/ScanFiles.php line 76 OC\Files\Utils\Scanner->backgroundScan("")
    8. /var/www/html/apps/files/lib/BackgroundJob/ScanFiles.php line 113 OCA\Files\BackgroundJob\ScanFiles->runScanner("nmax")
    9. /var/www/html/lib/public/BackgroundJob/Job.php line 78 OCA\Files\BackgroundJob\ScanFiles->run(null)
    10. /var/www/html/lib/public/BackgroundJob/TimedJob.php line 103 OCP\BackgroundJob\Job->start(["OC\BackgroundJob\JobList"])
    11. /var/www/html/lib/public/BackgroundJob/TimedJob.php line 93 OCP\BackgroundJob\TimedJob->start(["OC\BackgroundJob\JobList"])
    12. /var/www/html/cron.php line 152 OCP\BackgroundJob\TimedJob->execute(["OC\BackgroundJob\JobList"], ["OC\Log"])

at 2023-06-03T20:00:11+00:00`

wobblywob commented 1 year ago

Had this same issue on debian 12 (bookworm) and Nextcloud 26.0.2 native. php8.2-smbclient is not available via apt so I installed it via pecl and I think this solved it.

apt install php8.2-dev
pecl install smbclient-stable
echo "extension=smbclient.so" > /etc/php/8.2/mods-available/smbclient.ini
phpenmod smbclient

Then rebooted server.

flo-mic commented 11 months ago

For everyone who uses the alpine-fpm image, the following docker file will install the smb client for you. It adds 34MB to the target image

FROM nextcloud:26.0.7-fpm-alpine as base

RUN echo "**** install smb client libary ****" && \
    apk add --no-cache --upgrade \
        libsmbclient 

# Builder image to compile additional php extensions
From base as builder

RUN echo "**** install build packages ****" && \
    apk add --no-cache --upgrade \
        autoconf \
        g++ \
        gcc \
        make \
        samba-dev

RUN echo "**** configure php extensions ****" && \
    pecl install smbclient && \
    docker-php-ext-enable smbclient

# Final image with improved image size
FROM base as final

COPY --from=builder /usr/local/lib/php /usr/local/lib/php
COPY --from=builder /usr/local/etc/php /usr/local/etc/php
Hoshikawakaguya commented 11 months ago

Have same issue, and if I install php-smbclient, external storage just do no work anymore until I remove it.

prilly-dev commented 11 months ago

also have some issues related to this. installing smbclient dont fix it, but my install dont break either

mrmaciejo commented 10 months ago

Same here. I have 27.1.2 version and php 8.2.11 . All directories from SMB are functioning properly, except for the one where I store all my phone photos. It was working fine until 1-2 weeks ago. Could it be that it has reached some file limits or encountered another issue.

MarcS1975 commented 10 months ago

Has been going for years and nobody at NC is interested in foxing SMB functionality. They want to be a file sharing platform but do not support the biggest and most common file transfer protocol. Go figure :)

On Tue, Oct 24, 2023 at 10:49 PM mrmaciejo @.***> wrote:

Same here. I have 27.1.2 version and php 8.2.11 . All directories from SMB are functioning properly, except for the one where I store all my phone photos. It was working fine until 1-2 weeks ago. Could it be that it has reached some file limits or encountered another issue.

— Reply to this email directly, view it on GitHub https://github.com/nextcloud/server/issues/41114, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMNNHGU6MJXBXJ2SQTXJ5YTYBAZVVAVCNFSM6AAAAAAYYG77D6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZYGA4TMNRSGY . You are receiving this because you commented.Message ID: @.***>

joshtrichards commented 10 months ago

The issue here is that the SMB server is returning a response that lacks attributes or is somehow formatting the attributes in an unexpected way:

https://github.com/icewind1991/SMB/blob/8531ffd1cbec85f7cde6152cdd67ed03a96bc0e0/src/Wrapped/Parser.php#L155-L157

Can one of you you try manually connecting to your SMB server with smbclient and provide the output off the allinfo command (against one of the target files that returns this error in Nextcloud):

smbclient -U USERNAME //IPorHostname/theRemoteSubfolder
(you'll be prompted for the share password)
allinfo folder/file

Example of checking the file perftest/blahfile.tmp located on mount //192.168.x.y/backups:

xxx@debian1:~/tmp$ smbclient -U someuser //192.168.x.y/backups
Password for [WORKGROUP\someuser]:
Try "help" to get a list of possible commands.
smb: \> allinfo perftest/blahfile.tmp
altname: blahfile.tmp
create_time:    Wed Jan  6 11:35:39 AM 2021 EST
access_time:    Wed Jan  6 11:35:39 AM 2021 EST
write_time:     Wed Jan  6 11:37:36 AM 2021 EST
change_time:    Wed Jan  6 11:37:36 AM 2021 EST
attributes: A (20)
stream: [::$DATA], 10485760 bytes
smb: \> 

If you want to be extra diligent, run smbclient from your Nextcloud host (or container, where applicable) in case there is some unique weirdness with the smbclient version deployed.

Br4v3St4rr commented 10 months ago

The issue here is that the SMB server is returning a response that lacks attributes or is somehow formatting the attributes in an unexpected way:

https://github.com/icewind1991/SMB/blob/8531ffd1cbec85f7cde6152cdd67ed03a96bc0e0/src/Wrapped/Parser.php#L155-L157

Can one of you you try manually connecting to your SMB server with smbclient and provide the output off the allinfo command (against one of the target files that returns this error in Nextcloud):

smbclient -U USERNAME //IPorHostname/theRemoteSubfolder
(you'll be prompted for the share password)
allinfo folder/file

Example of checking the file perftest/blahfile.tmp located on mount //192.168.x.y/backups:

xxx@debian1:~/tmp$ smbclient -U someuser //192.168.x.y/backups
Password for [WORKGROUP\someuser]:
Try "help" to get a list of possible commands.
smb: \> allinfo perftest/blahfile.tmp
altname: blahfile.tmp
create_time:    Wed Jan  6 11:35:39 AM 2021 EST
access_time:    Wed Jan  6 11:35:39 AM 2021 EST
write_time:     Wed Jan  6 11:37:36 AM 2021 EST
change_time:    Wed Jan  6 11:37:36 AM 2021 EST
attributes: A (20)
stream: [::$DATA], 10485760 bytes
smb: \> 

If you want to be extra diligent, run smbclient from your Nextcloud host (or container, where applicable) in case there is some unique weirdness with the smbclient version deployed.

So the issue is uploading to the folder and not listing the folder. So there is no way to check this as the file never makes it up there.

e-patrick commented 10 months ago

It is true that the problem arises when trying to upload a file, but anyway I attempted to find the requested information. For an existing file:

smb: \> allinfo Camera/2023/IMG20231010140921.jpg
altname: I3Z20M~0.JPG
create_time:    Sat Oct 28 18:40:09 2023 UTC
access_time:    Sat Oct 28 18:40:09 2023 UTC
write_time:     Sat Oct 28 18:40:09 2023 UTC
change_time:    Sat Oct 28 18:40:09 2023 UTC
attributes: A (20)
stream: [::$DATA], 2665132 bytes

For a non-existing file:

smb: \> allinfo Camera/2023/IMG2023101014091.jpg
NT_STATUS_OBJECT_NAME_NOT_FOUND getting alt name for \Camera\2023\IMG2023101014091.jpg

And then I modified the line in Parser.php to include the contents of the method's parameter $output by adding a print_r($output,true) to the throw command.

The log now contains "CustomMessage":"Malformed state response from server. output is Array\n(\n)\n", so apparently the parseStat method is passed an empty array in the $output parameter.

What makes me wonder is that some of my images make it up onto the server, for example one from yesterday did, while others keep failing (for example one from February fails ever since).

karstenradatz commented 9 months ago

Hello,

I have the same issue. NC is running on my QNAP as Docker container and a share from the QNAP is mounted as SMB external storage.

One of the many files causing the issue has been uploaded via QNAP Filestation and the allinfo for this one is:

smb: \> allinfo "PC Dateien/IMAG0492.jpg"
altname: IMAG0492.jpg
create_time:    Sat Mar  1 13:08:06 2014 UTC
access_time:    Tue Nov 21 22:00:51 2023 UTC
write_time:     Sat Mar  1 13:08:06 2014 UTC
change_time:    Sat Mar  1 13:08:06 2014 UTC
attributes:  (80)
stream: [::$DATA], 1029540 bytes

The attributes part looks different compared to what e-patrick posted.

A file which works with the upload gives this information (which is the same as from e-patrick):

smb: \> allinfo "PC Dateien/uwert.png"
altname: uwert.png
create_time:    Tue Nov 21 22:07:41 2023 UTC
access_time:    Tue Nov 21 22:07:41 2023 UTC
write_time:     Tue Nov 21 22:07:41 2023 UTC
change_time:    Tue Nov 21 22:07:41 2023 UTC
attributes: A (20)
stream: [::$DATA], 182317 bytes

***Edit: It seems the Filestation is removing the Archive Attribute while uploading. Funnily the files worked after a successful upload when I uploaded only one by one or a small batch.

***Edit2: When uploading another batch of 350 files the error came up again after successfully upload 110 files. But in the log I get e.g.:

/var/www/html/lib/private/Files/Node/Folder.php - line 144:
OC\Files\Node\Folder->get("Anleitung.md")

/var/www/html/apps/text/lib/Service/WorkspaceService.php - line 26:
OC\Files\Node\Folder->nodeExists("Anleitung.md")

But this files was definitely not in the uploaded batch of files (images only). Also I see a lot of "file exists" entries in the log for files which are not in the folder. The file which is reported in the log to already exist is not on the smb share:

smb: \> allinfo "PC Dateien\iCloud Photos\Downloads\2016\IMG_0111.JPG"
NT_STATUS_OBJECT_NAME_NOT_FOUND getting alt name for \PC Dateien\iCloud Photos\Downloads\2016\IMG_0111.JPG

***Edit3: Even if I try to create a new folder via the UI it says in the log: "file exists" and in the second row "Undefined array key "attributes" at /var/www/html/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php#155" while the smbclient within the container is able to create the new folder:

smb: \> md "PC Dateien\iCloud Photos\Downloads\2016\Neuer Ordner"
smb: \> allinfo "PC Dateien\iCloud Photos\Downloads\2016\Neuer Ordner"
altname: N4BIQL~M
create_time:    Tue Nov 21 23:24:20 2023 UTC
access_time:    Tue Nov 21 23:24:20 2023 UTC
write_time:     Tue Nov 21 23:24:20 2023 UTC
change_time:    Tue Nov 21 23:24:20 2023 UTC
attributes: D (10)
stevenjoezhang commented 8 months ago

I have encountered a similar issue and found that it's caused by https://github.com/nextcloud/text plugin when it's trying to access a non-existent README.md file inside a Samba share folder. After removing the text plugin, the issue was resolved. However, it's very strange because trying to access a non-existent is quite common and should be error-handled by Nextcloud samba client.

Softbox44 commented 5 months ago

2 years later and same error still here. Thats ridiculous

LevAnni777 commented 2 months ago

This issue still exists in version 29.0.3

I just see tons of variants how to break my nextcloud installation

LevAnni777 commented 1 month ago

This was resolved on my Debian bullseye by installing pecl smbclient extension https://pecl.php.net/package/smbclient

Somebody please tell me how you are installing this additional pecl php smbclient in docker envoronment? Truenas -> Nextcloud Container?

I'm installing it according to this doc:

https://github.com/nextcloud/docker/tree/master/.examples#php-module-smbclient

everything installes perfectly, I even see php extension installed by running php -m, but as soon as I restart my nextcloud instance the configuration returns everything back to its previous (native) installation through Truenas and I no longer see smbclient in the php extensions.