Php upload strange behavior - php

I was testing a little application I've made and I saw a strange behaviour when uploading multiple files that exceed some size.
I've read the bug mentioned here, but its way long ago. Strangely, I experience the same behaviour as the guy mentions in the bug.
When I upload, say 10 files in small size (50-300kb each) there is nothing wrong and the application works.
When I upload, two files with 1.5mb each, the application outputs an error message as the maximum allowed size is 512kb by the application (2mb in php.ini).
When I upload, multiple files that exceed 7 or 8 mb (I haven't tried to locate the exact size), php crashes without giving an error. Since I am in a development server, the errors are turned on and normally it displays the fatal errors.
When I upload, 1 file (say 25mbs), I still have the same error.
Well, I say it crashes because when I try to var_dump($_FILES) or even var_dump($_POST) the array returns null although it should have at least the submit name or whatever.
I've checked the tmp folder and the files are not being stored there as well. However, another strange behavior is that when I upload the files that exceed this mysterious limit, the browser seems to be uploading (I see the page takes a while to load), however, as mentioned, php acts like it does not know anything.
What could be the reasong of this strange behaviour?
PS: I'm working on my localhost (wampserver) on Windows 7 64-bit.
EDIT
Found the solution:
changing post_max_size from 8mb to something else solved my problem.
Here is a quote from the manual for those who need:
Sets max size of post data allowed. This setting also affects file
upload. To upload large files, this value must be larger than
upload_max_filesize. If memory limit is enabled by your configure
script, memory_limit also affects file uploading. Generally speaking,
memory_limit should be larger than post_max_size. When an integer is
used, the value is measured in bytes. Shorthand notation, as described
in this FAQ, may also be used. If the size of post data is greater
than post_max_size, the $_POST and $_FILES superglobals are empty.
This can be tracked in various ways, e.g. by passing the $_GET
variable to the script processing the data, i.e. , and then checking if
$_GET['processed'] is set.

That is error because you have very less upload limit - upload_max_filesize or post_max_size .
in php.ini just increase value of both to 200MB and you will nt receive this error

in the server there is a limit to send post. your should be 512kb. you can check in phpinfo();
i think its the parameter in php.ini upload_max_filesize. change to bigger size.

Related

Symfony2 Large File Uploads

I am trying to upload large files (5-8Mb) in my Symfony2 projects. For some reason anytime I upload anything larger than 2Mb the script bombs out. I can upload anything smaller than 2Mb. I have changed my php.ini file and php -i reflects these changes. I have restarted apache. What else do i need to do to make these larger file upload work. Thanks.
Ran into this issue before; try a chunking method of uploading. Most likely the script is exceeding the max execution time. So (without knowing what your logic looks like) have a function that sends the request (say 1MB) to another file that reads the input stream of the binary data within a while loop and continues to execute as long as the content length of the binary data does not equal zero. The while loop writes the data to a temp file and when it hits zero saves it to a permanent directory (or whatever you want to do from there) You can increase the max memory allowed and execution time in php.ini but this introduces security issues and is not recommended.
In your current PHP config, you probably limited the max upload size to 2M, so Symfony display the wrong error.
So check your php.ini file (/etc/php5/apache2/php.ini on Linux) and increase max_upload_size to fit your field :
upload_max_filesize = 20M
Don't forget to restart apache : apache2ctl restart
Now it should work !

Uploading files gives ERR_CONNECTION_RESET

When uploading files that are larger and take longer I get this response:
First time I try to upload a big file it seem to get: ERR_CONNECTION_ABORTED
after that it becomes ERR_CONNECTION_RESET
I checked all the upload limits etc all are 240seconds or higher and 256mb
I tried uploading 200mb file.
It always seems to happen at the same moment which is at 1 min.
There are no 60 second limits or anything in the phpinfo.
Also tried locally upping all the limits with no result.
Here is the main upload part. If additional info required I'll update the question A.S.A.P
Edit: Just came across this which is being used as well: SWFUpload
Getting error code 2038
Reinstalling flash doesn't work, neither do other browsers!
increase upload_max_filesize, max_input_time, and post_max_size an memory_limit in your php.ini. eventhought 200MB it is too big. if it is text/csv you might want to split the file in multiple files.

Forms with large number of checkboxes no longer work on new server

I know this question is really open-ended. Recently migrated from one server to another server at the same web host. The PHP version on the old server is 5.2.8 and the new server is 5.2.17. Everything works normally except for 2 pages. Both of them have a large number of checkboxes on the page to select different attributes for a product (200 checkboxes+). These pages no longer update products when the form is submitted. There are no errors, everything seems to be working correctly except the updates in the mysql db aren't being made. Other forms on the site are working correctly.
Any ideas what this could be? I know there's not a lot to go off of here, but any ideas where to start would be very helpful.
Thanks!
Check your post_max_size in php.ini. It may be that you are exceeding the limit set in it.
From the php manual
post_max_size
Sets max size of post data allowed. This setting also affects file
upload. To upload large files, this value must be larger than
upload_max_filesize. If memory limit is enabled by your configure
script, memory_limit also affects file uploading. Generally speaking,
memory_limit should be larger than post_max_size. When an integer is
used, the value is measured in bytes. Shorthand notation, as described
in this FAQ, may also be used. If the size of post data is greater
than post_max_size, the $_POST and $_FILES superglobals are empty.
This can be tracked in various ways, e.g. by passing the $_GET
variable to the script processing the data, i.e. , and then checking if
$_GET['processed'] is set.
The error was being caused because max_input_vars in PHP was set to 1000. I
had to increase that number in php.ini and it solved the problem.
Try increasing your post_max_size configuration directive in php.ini

move_uploaded_file file disappears from tmp but does not reach destination

I have a really odd problem. I am using an upload form to upload videos. Sometimes I have to try twice to upload a file so I know it works but these files take a long time to upload so I don't want the end-user getting mad if the process fails. Also, this works 100% of the time on my test machine so I am thinking there is a config problem.
The file is 330mb and I set upload_max_filesize and post_max_size to 500mb. The max_execution_time and max_input_time are set to 60000 for testing purposes. memory_limit is what I think may be the problem. It is set to 128mb. Does it need to be higher to have a consistent upload success rate? Anybody know of any other problems that could cause things to go wrong?
You're right in assuming memory_limit is your culprit.
Taken from php.net.
post_max_size (int)
Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize.
If memory limit is enabled by your configure script, memory_limit also affects file uploading. Generally speaking, memory_limit should be larger than post_max_size. When an integer is used, the value is measured in bytes. Shorthand notation, as described in this FAQ, may also be used. (...)

Standard size of uploading image (PHP)

What is standard size to upload an image.When user are uploading a large image to my website upload time error is occurring.I am resizing image at the time of uploading also.I want to modify my code as if large image will go to upload then image upload should not occur.
So what is standard size of image to upload on server for any website ? So that way i will fix my code.
Thanks in advance
php.ini controls file uploads with several configuration directives.
file_uploads controls whether uploading files is allowed. Yes, 1 is the default.
upload_tmp_dir is the temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as. If not specified PHP will use the system's default. The default is NULL.
upload_max_filesize is what you're interested in. It's the largest upload allowed. The default is 2M. If you supply only an integer, it is assumed to be bytes. Or you can change it using a shortcut, like this:
upload_max_filesize = 10M
max_file_uploads is the max number of files that can be uploaded simultaneously. The default is 20.
Another setting that affects uploading files is the max size of POST data which is controlled with post_max_size.
If you do not need / want to change your php.ini file, you can set these values for the duration of your scripts execution using string ini_set ( string $varname , string $newvalue ).
This returns the old value if you succeeded in changing the value, and it returns false if the change didn't succeed. So, to change upload_max_filesize to 10M you could do :
if ( ini_set('upload_max_filesize', '10M') )
{
// Do stuff that requires big files to be uploaded
}
As a foot note to changing these memory values:
PHP allows shortcuts for bit values, including K (kilo), M (mega) and G (giga). PHP will do the conversions automatically if you use any of these. Be careful not to exceed the 32 bit signed integer limit (if you're using 32bit versions) as it will cause your script to fail.
Most times php is configured to accept no more the 2mb files.
Check here for solution
For the memory problem try:
ini_set("memory_limit","80M"); //or any amount of ram but do not go to high
Your thumbnailer probably uses to much ram because of the high resolution of your image.So giving more memory to php is a quick hack to make it work. But big enough images will still crash.

Categories