MAX_FILE_SIZE in PHP – what’s the point?

After failed attempt to find any authoritative information about MAX_FILE_INFO i’ve decided to resort to drastic measures – and peeked at PHP’s holy source.

I scanned entire PHP source recursively using grep:

grep -ri MAX_FILE_SIZE .

The only place that mentioned this variable was (excluding tests folder) – rfc1867.c file.
Completely expectable since rfc1867 standard deals with file uploads.

Related C code:

......
if (!strcasecmp(param, "MAX_FILE_SIZE")) {                                                                                                                                                                              
   max_file_size = atol(value);
}
......
......
if (PG(upload_max_filesize) > 0 && (total_bytes+blen) > PG(upload_max_filesize)) {
    cancel_upload = UPLOAD_ERROR_A;
} else if (max_file_size && ((total_bytes+blen) > max_file_size)) {
    cancel_upload = UPLOAD_ERROR_B;
} else if
....

So – here’s short explanation of above code:

1) first we get the value of MAX_FILE_SIZE into max_file_size variable.

2) Then we check if max_file_size value exists and if the sum of already accepted bytes (total_bytes) + the size of bytes in the buffer(blen) exceeds max_file_size.

3) If 2 is true – at this point we cancel upload with some error code that’s been set by this constant: UPLOAD_ERROR_B

BUT – as you can see – right before checking max_file_size variable – PHP performs EXACTLY THE SAME CHECK for upload_max_filesize variable!!!
So – there we have it.

Conclusion:
IMHO – op is right – there is 0 point in including MAX_FILE_SIZE into your forms! Simply set upload_max_filesize in your php.ini file or dynamically via ini_set().

Leave a Comment