Upload cameraroll (~25000 photos), many 404 errors due to missing directory.
Steps to reproduce
- Clear all photos from nextcloud server
- Reset nextcloud ios application
- Upload whole cameraroll using monthly subdirs
Expected behaviour
All photos & movies uploaded in the appropriate subdirs
Actual behaviour
Upload often seems to stop, then when looking in the log it seems that it receives a 404 error because the folder does not yet exist. When i create the folder using the web ui, sometimes uploading will continue.
Logs
Can add on request.
Reasoning or why should it be changed/implemented?
Because the current situation is not user friendly, and imho simply faulty.
Environment data
iOS version: e.g. iOS 18.5
Nextcloud iOS app version: 7.0.0.25
Server operating system: debian/bookworm (docker.io/nextcloud:31)
Web server: Apache (docker.io/nextcloud:31)
Database: Mariadb
PHP version:
Nextcloud version: [Nextcloud Hub 10] (31.0.5)
Also happens to me AIO docker. Was happening on previous version AIO 11.4.0. That's because I upgraded to latest AIO but problem it's still here.
So I tried to create 08 (august) directory and 21 media are uploading.
Inside the logs I get this. 404 error appears repeated.
https://nextcloud.local:8080/api/docker/logs?id=nextcloud-aio-mastercontainer
2025-08-11T18:59:33.208623456Z Trying to fix docker.sock permissions internally...
2025-08-11T18:59:33.221318963Z Creating docker group internally with id 113
2025-08-11T18:59:34.105079083Z WARNING: No memory limit support
2025-08-11T18:59:34.105174693Z WARNING: No swap limit support
2025-08-11T18:59:34.178731309Z WARNING: No memory limit support
2025-08-11T18:59:34.178814401Z WARNING: No swap limit support
2025-08-11T18:59:34.608490617Z [0;92mInitial startup of Nextcloud All-in-One complete!
2025-08-11T18:59:34.608573283Z You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!
2025-08-11T18:59:34.608592764Z E.g. https://internal.ip.of.this.server:8080
2025-08-11T18:59:34.608610116Z ⚠️ Important: do always use an ip-address if you access this port and not a domain as HSTS might block access to it later!
2025-08-11T18:59:34.608628857Z
2025-08-11T18:59:34.608646282Z If your server has port 80 and 8443 open and you point a domain to your server, you can get a valid certificate automatically by opening the Nextcloud AIO Interface via:
2025-08-11T18:59:34.608664097Z https://your-domain-that-points-to-this-server.tld:8443[0m
2025-08-11T18:59:35.400380263Z /usr/lib/python3.12/site-packages/supervisor/options.py:13: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
2025-08-11T18:59:35.400480429Z import pkg_resources
2025-08-11T18:59:36.711916408Z [Mon Aug 11 18:59:36.710890 2025] [mpm_event:notice] [pid 143:tid 143] AH00489: Apache/2.4.65 (Unix) OpenSSL/3.5.1 configured -- resuming normal operations
2025-08-11T18:59:36.712051111Z [Mon Aug 11 18:59:36.711057 2025] [core:notice] [pid 143:tid 143] AH00094: Command line: 'httpd -D FOREGROUND'
2025-08-11T18:59:36.763671967Z {"level":"info","ts":1754938776.7629137,"msg":"maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined"}
2025-08-11T18:59:36.764282759Z {"level":"info","ts":1754938776.763436,"msg":"GOMEMLIMIT is updated","package":"github.com/KimMachineGun/automemlimit/memlimit","GOMEMLIMIT":3627874713,"previous":9223372036854775807}
2025-08-11T18:59:36.764356296Z {"level":"info","ts":1754938776.7636716,"msg":"using config from file","file":"/Caddyfile"}
2025-08-11T18:59:36.765353511Z [11-Aug-2025 18:59:36] NOTICE: fpm is running, pid 148
2025-08-11T18:59:36.766135895Z [11-Aug-2025 18:59:36] NOTICE: ready to handle connections
2025-08-11T18:59:36.768370084Z {"level":"info","ts":1754938776.7677279,"msg":"adapted config to JSON","adapter":"caddyfile"}
2025-08-11T18:59:36.786983421Z {"level":"info","ts":1754938776.7862585,"msg":"serving initial configuration"}
2025-08-11T19:07:12.952582528Z NOTICE: PHP message: 404 Not Found
2025-08-11T19:07:12.952704693Z Type: Slim\Exception\HttpNotFoundException
2025-08-11T19:07:12.952728248Z Code: 404
2025-08-11T19:07:12.952746396Z Message: Not found.
2025-08-11T19:07:12.952803729Z File: /var/www/docker-aio/php/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php
2025-08-11T19:07:12.952824117Z Line: 76
2025-08-11T19:07:12.952841025Z Trace: #0 /var/www/docker-aio/php/vendor/slim/slim/Slim/Routing/RouteRunner.php(62): Slim\Middleware\RoutingMiddleware->performRouting(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.952860117Z #1 /var/www/docker-aio/php/vendor/slim/csrf/src/Guard.php(482): Slim\Routing\RouteRunner->handle(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.952878321Z #2 /var/www/docker-aio/php/vendor/slim/slim/Slim/MiddlewareDispatcher.php(177): Slim\Csrf\Guard->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Slim\Routing\RouteRunner))
2025-08-11T19:07:12.952901005Z #3 /var/www/docker-aio/php/vendor/slim/twig-view/src/TwigMiddleware.php(117): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.952919339Z #4 /var/www/docker-aio/php/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Views\TwigMiddleware->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous))
2025-08-11T19:07:12.952938375Z #5 /var/www/docker-aio/php/src/Middleware/AuthMiddleware.php(36): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.952956709Z #6 /var/www/docker-aio/php/vendor/slim/slim/Slim/MiddlewareDispatcher.php(280): AIO\Middleware\AuthMiddleware->__invoke(Object(GuzzleHttp\Psr7\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous))
2025-08-11T19:07:12.952975319Z #7 /var/www/docker-aio/php/vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php(77): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.952993578Z #8 /var/www/docker-aio/php/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Middleware\ErrorMiddleware->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous))
2025-08-11T19:07:12.953012115Z #9 /var/www/docker-aio/php/vendor/slim/slim/Slim/MiddlewareDispatcher.php(73): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.953033615Z #10 /var/www/docker-aio/php/vendor/slim/slim/Slim/App.php(209): Slim\MiddlewareDispatcher->handle(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.953052393Z #11 /var/www/docker-aio/php/vendor/slim/slim/Slim/App.php(193): Slim\App->handle(Object(GuzzleHttp\Psr7\ServerRequest))
2025-08-11T19:07:12.953069929Z #12 /var/www/docker-aio/php/public/index.php(196): Slim\App->run()
2025-08-11T19:07:12.953087281Z #13 {main}
2025-08-11T19:07:12.953104040Z Tips: To display error details in HTTP response set "displayErrorDetails" to true in the ErrorHandler constructor.
Can you try the TestFlight version ?
https://testflight.apple.com/join/RXEJbWj9
If anyone having TestFlight version, tested this fix, maybe can be released?
I installed the TestFlight version - still the same errors, even after reboot / restart:
Well it's nice, because it's handling the exception... But why the folder can't be created? 😅