Four separate limits govern an upload and the error message names only the one that fired, which is usually not the one you changed.
# nginx
client_max_body_size 64m; # default 1m → 413
# php.ini
upload_max_filesize = 64M; # → the file is silently dropped
post_max_size = 68M; # must exceed upload_max_filesize
memory_limit = 128M;
# and php-fpm's own request terminate timeout, for a slow
# upload that is otherwise fine
The PHP limit failing silently is the worst of the four: the request completes, $_FILES is empty or carries an error code, and an application that does not check the error code reports a successful upload of nothing. Setting post_max_size above upload_max_filesize is required and is routinely forgotten, because the relationship is not obvious from either name.