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.