In my site host, I have seen (via phpinfo) that
- post_max_size = 8Mb
- upload_max_filesize = 16Mb
This led me to think that I should be able to upload as file as big as 16Mb. However, when I do this through a post method (as normal), post_max_size takes over and declares that I sent too much.
What is the method which permits sending a file as big as 16Mb ? GET - PUT - other ?
Hope someone can clarify this for me.
Simon
post_max_size:
upload_max_filesize:
memory_limit > post_max_size > upload_max_filesize
PHP Default: 128M > 8M > 2M
By default, post_max_size should be 4 times greater than upload_max_filesize.
In turn memory_limit should be 16 times greater than post_max_size
By POST file uploads are done (commonly, there are also other methods). Look into the method attribute of the form which contains the file-upload field ;)
The lowest limit of any related setting supersedes a higher setting:
See Handling file uploads: Common Pitfals which explains this in detail and how to calculate the values.
change in php.ini
max_input_vars 1000
upload_max_filesize
is the limit of any single file.post_max_size
is the limit of the entire body of the request, which could include multiple files.Given
post_max_size = 20M
andupload_max_filesize = 6M
you could upload up to 3 files of 6M each. If insteadpost_max_size = 6M
andupload_max_filesize = 20M
then you could only upload one 6M file before hitting post_max_size. It doesn't help to haveupload_max_size
>post_max_size
.It's not obvious how to recognize going over
post_max_size
.$_POST
and$_FILES
will be empty, but$_SERVER['CONTENT_LENGTH']
will be > 0. If the client just didn't upload any post variables or files, then$_SERVER['CONTENT_LENGTH']
will be 0.Your server configuration settings allows users to upload files upto 16MB (because you have set upload_max_filesize = 16Mb) but the post_max_size accepts post data upto 8MB only. This is why it throws an error.
Quoted from the official PHP site:
You should always set your post_max_size value greater than the upload_max_filesize value.
The normal method to send a file upload is POST, thus also
post_max_size
should be 16 Mb or more.Incidentally, also
memory_limit
plays a role. It should be bigger than 16Mb, but since the default value is 128Mb, you won't see this problem. Examplephp.ini
configuration:Change these value in
php.ini
if you've access to it, otherwise you can try to change them in an.htaccess
file.This will work only if the
AllowOverride
settings permit it. Otherwise, you've to ask to your hosting company.