This is NC16.0.9, it started life perhaps six years ago and was upgraded all the way to where we are now.
So another one of the usual “uploads not working” threads. I looked at all the previous ones and have been able to discard the usual possibilities such as Nginx configuration issues and PHP upload file limits. What I did see while looking at the errors was this:
20. /nextcloud/apps/dav/lib/Upload/ChunkingPlugin.php line 77 Sabre\DAV\Tree->move("uploads/fuicui/1871329941/.file", "files/fuicui/fi ... t") 21. /nextcloud/apps/dav/lib/Upload/ChunkingPlugin.php line 56 OCA\DAV\Upload\ChunkingPlugin->performMove("uploads/fuicui/1871329941/.file", "files/fuicui/fi ... t") 22. <<closure>> OCA\DAV\Upload\ChunkingPlugin->beforeMove("uploads/fuicui/1871329941/.file", "files/fuicui/fi ... t") 23. /nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php line 105 undefinedundefinedcall_user_func_array([OCA\DAV\Upload\ ... "], ["uploads/fuicui ... "]) 24. /nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php line 633 Sabre\Event\EventEmitter->emit("beforeMove", ["uploads/fuicui ... "])
Leaving aside the
undefinedundefinedcall_user_func_array bit, dodgy as it looks, what caught my attention was that the directory
uploads/fuicui/… does not exist! Not even while uploading. When the chunked upload is in progress what does temporarily exist is
nextcloud/data/fuicui/uploads/ with contents:
fuicui/uploads/ 989338463/ 00000000.ocTransferId2033847928.part
In other words, the username and the
uploads literal are the wrong way around, and the expected
.file file does not exist. The structure is completely different than what those
ChunkingPlugin methods appear to be expecting.
How is that possible?