Connecting to DigitalOcean Spaces with new SpacesConnect($key, $secret, $space_name, $region) returned: "SignatureDoesNotMatch" 403. Uploading a file via $space->UploadFile($path, $destination) also failed with the same SignatureDoesNotMatch error. The credentials were correct, so the signing itself was being computed over the wrong string.