PHP Upload Large File Bug

After spending an hour trying to debug a strange issue with PHP & handling large (2GB+) file uploads, I figured I should post the resolution in case someone stumbles upon this post.

Most people are aware that they need to set the the upload_max_filesize and post_max_size directives to handle large file uploads.  However, there is bug within PHP that does not handle files larger than 2GB, even when these directives are set to a higher value.


You have the PHP directives set properly to handle the a 2GB+ file size however the
$_FILES[x][‘error’] will be set to 1 (UPLOAD_ERR_INI_SIZE), indicating that the file size exceeded the upload_max_size directive.


You must set the upload_max_filesize = 0

This will prevent the $_FILES[x][‘error’] from being set, however the $_FILES[x][‘size’] will now be an overflowed integer.



This applies to PHP version 5.3.3.  Not tested with other/latest versions.

Blame yourself!

Came across a great blog post titled “Stop Blaming the System!” by Jurgen Appelo.  This really relates to my Status Quo post.  Stop blaming the system or using excuses like “that’s the way it is”.  Processes and systems were put in place by people to solve a specific problem.  Companies, processes, practices, and requirements all evolve and change.

When you recognize a constant pain point try and find a solution.  Just don’t let it go by as “that’s just the way it is”.  Take responsibility.