Bug #66082 [NEW]: Big files upload problem
| From: | nemesiz at nmz dot lt | Date: | Tue, 12 Nov 2013 16:28:07 +0000 |
| Subject: | Bug #66082 [NEW]: Big files upload problem | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-182718@lists.php.net to get a copy of this message | ||
From: nemesiz at nmz dot lt
Operating system: linux debian 7 64 bit
PHP version: 5.5.5
Package: *General Issues
Bug Type: Bug
Bug description:Big files upload problem
Description:
------------
OS - Ubuntu saucy
Browser - Google Chrome Version 30.0.1599.114
Server OS - Dedian 7 64bit
PHP - 5.5.5 FPM
Web server - Apache 2.4.6 with fastcgi module
Web server2 - nginx/1.4.1
PHP ini -
upload_max_filesize = 16G
post_max_size = 16G
max_input_time = -1
memory_limit = 512M
PHP compile -
'./configure' '--prefix=/usr/local/php/5.5.5' '--enable-cli'
'--disable-cgi' '--enable-fpm'
'--with-config-file-path=/usr/local/php/5.5.5/etc'
'--with-config-file-scan-dir=/usr/local/php/5.5.5/etc/conf.d'
'--enable-bcmath' '--enable-calendar' '--enable-ctype'
'--enable-exif'
'--enable-ftp' '--enable-intl' '--enable-mbstring=all'
'--enable-zip'
'--with-gd' '--with-jpeg-dir' '--with-png-dir'
'--with-xpm-dir'
'--with-t1lib' '--enable-gd-native-ttf' '--with-freetype-dir'
'--enable-pcntl=shared' '--with-pcre-regex' '--with-pdo-mysql=mysqlnd'
'--with-pdo-pgsql' '--disable-posix' '--enable-sockets=shared'
'--with-zlib' '--with-bz2' '--with-curl=shared'
'--enable-libxml'
'--with-gettext' '--with-imap' '--with-imap-ssl'
'--with-kerberos'
'--with-mcrypt' '--with-mhash' '--with-mysql'
'--with-mysqli=mysqlnd'
'--with-openssl' '--with-pspell' '--enable-soap'
'--with-tidy'
'--with-xsl'
Upload test files
-rw-rw-r-- 1 nmz nmz 2097152000 Nov 12 17:17 2000
-rw-rw-r-- 1 nmz nmz 4194304000 Nov 12 17:49 4000
-rw-rw-r-- 1 nmz nmz 6291456000 Nov 12 17:54 6000
Apache sends POST data directly to PHP. Nginx saves first to self then
send everything to PHP.
2GB file (2000) - OK
4GB file (4000) - OK
6GB file (6000) - PARTIAL
Browser send file OK. Server accept it too. PHP stop proceeding.
Nginx example:
# lsof -p 24349
COMMAND PID USER FD TYPE DEVICE SIZE/OFF
NODE NAME
nginx 24349 www-data cwd DIR 0,92 30
4 /
nginx 24349 www-data rtd DIR 0,92 30
4 /
nginx 24349 www-data txt REG 0,92 592816
2230186 /usr/sbin/nginx
nginx 24349 www-data mem REG 0,47
2230186 /usr/sbin/nginx (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157081 /lib/x86_64-linux-gnu/libnss_files-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157077 /lib/x86_64-linux-gnu/libnss_nis-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157053 /lib/x86_64-linux-gnu/libnsl-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157059 /lib/x86_64-linux-gnu/libnss_compat-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157095 /lib/x86_64-linux-gnu/libdl-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157093 /lib/x86_64-linux-gnu/libc-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
9465 /lib/x86_64-linux-gnu/libz.so.1.2.8 (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2171351 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2171352 /lib/x86_64-linux-gnu/libssl.so.1.0.0 (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2169146 /lib/x86_64-linux-gnu/libpcre.so.3.13.1 (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157091 /lib/x86_64-linux-gnu/libcrypt-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157096 /lib/x86_64-linux-gnu/libpthread-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,47
2157071 /lib/x86_64-linux-gnu/ld-2.17.so (path dev=0,92)
nginx 24349 www-data mem REG 0,97
119761855 (deleted)/dev/zero (stat: No such file or directory)
nginx 24349 www-data 0u CHR 1,3 0t0
2227785 /dev/null
nginx 24349 www-data 1u CHR 1,3 0t0
2227785 /dev/null
nginx 24349 www-data 2w REG 0,92 5535
229807 /var/log/nginx/error.log
nginx 24349 www-data 3u unix 0xffff88075744c440 0t0
119761857 socket
nginx 24349 www-data 4w REG 0,92 6113
229806 /var/log/nginx/access.log
nginx 24349 www-data 5w REG 0,92 5535
229807 /var/log/nginx/error.log
nginx 24349 www-data 6u IPv4 119761854 0t0
TCP *:81 (LISTEN)
nginx 24349 www-data 7u unix 0xffff8803fed77780 0t0
119761861 socket
nginx 24349 www-data 8u unix 0xffff8803fed76dc0 0t0
119761863 socket
nginx 24349 www-data 9u unix 0xffff8803fed77440 0t0
119761860 socket
nginx 24349 www-data 10u REG 0,9 0
3866 anon_inode
nginx 24349 www-data 11u IPv4 119775026 0t0
TCP 10.10.10.3:81->10.10.11.13:33475 (ESTABLISHED)
nginx 24349 www-data 12u REG 0,92 6291456291
235481 (deleted)/var/lib/nginx/body/0000000002
nginx 24349 www-data 13u unix 0xffff8801d540bac0 0t0
119784623 socket
root@web:/home/nmz/php/tmp# ls -lah php* && ls -la php*
-rw------- 1 nmz nmz 1.8G Nov 12 16:16 phppeElVl
-rw------- 1 nmz nmz 1867738816 Nov 12 16:16 phppeElVl
root@web:/home/nmz/php/tmp# ls -lah php* && ls -la php*
-rw------- 1 nmz nmz 1.9G Nov 12 16:16 phppeElVl
-rw------- 1 nmz nmz 1980361935 Nov 12 16:16 phppeElVl
root@web:/home/nmz/php/tmp# ls -lah php* && ls -la php*
ls: cannot access php*: No such file or directory
It stops to accept 6GB file then reach ~2GB
Test script:
---------------
<html><body>
<form action="" method="post"
enctype="multipart/form-data"><label
for="file">Filename:</label><input type="file" name="file"
id="file"><br<input type="submit" name="submit"
value="Submit"></form>
<?php
if (isset($_FILES["file"]) == true) {
if ($_FILES["file"]["error"] > 0) { echo "Error: " .
$_FILES["file"]["error"] . "<br>"; }
else {
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . "
kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
} else { echo "no file."; } ?>
</body></html>
Expected result:
----------------
Upload: 2000
Type: application/octet-stream
Size: 2048000 kB
Stored in: /home/nmz/php/tmp/phpLYRMee
Upload: 4000
Type: application/octet-stream
Size: -98304 kB
Stored in: /home/nmz/php/tmp/phphU3afJ
Upload: 6000
Type: application/octet-stream
Size: xxx kB
Stored in: /home/nmz/php/tmp/phpxxx
Actual result:
--------------
Upload: 2000
Type: application/octet-stream
Size: 2048000 kB
Stored in: /home/nmz/php/tmp/phpLYRMee
Upload: 4000
Type: application/octet-stream
Size: -98304 kB
Stored in: /home/nmz/php/tmp/phphU3afJ
Error: 3
--
Edit bug report at https://bugs.php.net/bug.php?id=66082&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=66082&r=trysnapshot54
Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=66082&r=trysnapshot55
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=66082&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=66082&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=66082&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=66082&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=66082&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=66082&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=66082&r=support
Expected behavior: https://bugs.php.net/fix.php?id=66082&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=66082&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=66082&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=66082&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=66082&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=66082&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=66082&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=66082&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=66082&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=66082&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=66082&r=mysqlcfg