- Akeeba Backup Professional 10.3.7
- Joomla 5.x, PHP 8.x, Linux/cPanel host
- Post-processing: Upload to Amazon S3 (signature v4, "Disable multipart uploads" enabled, ACL bucket-owner-full-control)
- Archiver: JPA, split archive enabled, part size 20 MiB (20,971,520 bytes)
What I did
Ran a full backup on this profile. The backup builds the archive fine and every numbered part (.j01 … .j230) uploads to S3 successfully.
What happened
Post-processing aborts the whole backup on the final .jpa part:
Failed to process file ...-.jpa
Error received from the post-processing engine:
Missing input parameters
[Akeeba\S3\Exception\CannotPutFile] .../vendor/akeeba/s3/src/Connector.php(86)
Failed Smart algorithm on Akeeba\Engine\Core\Domain\Finalization
The error is thrown client-side before anything is sent to Amazon (it is not an S3/HTTP response error).
What I found (root cause)
The archive total was an exact multiple of the part size, so the archiver produced a zero-byte trailing .jpa part:
- Part size: 20,971,520 bytes
- Total archive (from the log): 4,823,449,600 bytes
- 4,823,449,600 / 20,971,520 = 230.000 exactly -> .j01….j230 are full, .jpa is 0 bytes
The S3 engine then rejects the empty part:
- engine/Postproc/Amazons3.php:153 -> $fileSize = @filesize($localFilepath); (0 for the empty .jpa)
- simpleUpload() calls Input::createFromFile() and putObject()
- vendor/akeeba/s3/src/Connector.php:82 -> the guard `if ($input->getSize() redentials/config problem and sent me looking in the wrong place at first.
I've attached the full Akeeba Backup debug log for this run.