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.

Problem

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.

Solution

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.

Reference

https://bugs.php.net/bug.php?id=44522

Notes

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

Leave a Reply

Your email address will not be published. Required fields are marked *