$_POST in php is empty when data is too big - php

We have developed a web application using php. It worked perfectly until the client migrated it to VMware. Ever since some of the forms which were sent in POST are not being sent and we found out that it only happens when above a certain amount of data is being sent.
It only happens when running the application in the VMware environment.
HELP please!!
UPDATE:
In the apache_error.log file I found the following error:
PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0, referer: .....
This param could only be found in the php.ini-development and php.ini-production and it was commented so I've removed the ;; and increased the value and also added the value in the php.ini file but it all being ignored as I can see in the phpinfo()
any suggestion?
PHP version 5.3.13

The max_input_vars being commented in php.ini most likely means it is using the default value. You are able to override it by uncommenting it. Commented does not mean ignored in this case.
the post_max_size parameter should also be configurable inside your php.ini file. Make sure to restart apache before testing and after changing anything in that file. In your php.ini file, find the line that says
post_max_size = 2M
(or whatever max size)
and increase it to 8M or something similar.
Your php.ini file may or may not be located at
/etc/php5/apache2/php.ini
It really varies from distro to distro.

Change the value of post_max_size in php.ini to post_max_size = 2M
or via .htaccesss add this
php post_max_size = 2M

Solved it by increasing the value of max_input_vars in the php.ini file.
This worth knowing that one of the symptoms was that the POST array was empty...

My guess is that you have a distribution configured to handle a
post_max_size
that is higher than the standard 2MB and you are sending "more" than 2MB.
You can override this using a custom php.ini or custom "php_value post_max_size 8MB" depending on the server configuration.

Related

PHP Can't upload large video to the SQL database [duplicate]

I am getting this error when trying to upload an import on WordPress on my XAMPP local dev environment:
Warning: POST Content-Length of 8978294 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
I changed the upload_max_filesize from 2M to 1000M, but that didn't seem to do anything.
Any ideas?
8388608 bytes is 8M, the default limit in PHP. Update your post_max_size in php.ini to a larger value.
upload_max_filesize sets the max file size that a user can upload while
post_max_size sets the maximum amount of data that can be sent via a POST in a form.
So you can set upload_max_filesize to 1 meg, which will mean that the biggest single file a user can upload is 1 megabyte, but they could upload 5 of them at once if the post_max_size was set to 5.
Changes will take effect after a restart of the server.
Just set these in php.ini:
upload_max_filesize = 1000M;
post_max_size = 1000M;
1. First u will find the php.ini file.
u can find php.ini file from this path. C:\xampp\php or from
xampp folder.
2. Now open php.ini file and change the following:
1. post-max-size (change 8M to 800M).
2. upload-max-filesize (change 2M to 2000M).
3. Now stop the Apache server and MySQL.
4. Now restart Apache server and MySQL.
It worked fine after that.
Enjoy ur working now :)
That's an 8MB post_max_size error.
Set it to a value you're comfortable with.
You will have to change the value of
post-max-size
upload-max-filesize
both of which you will find in php.ini
Restarting your server will help it start working. On a local test server running XAMIP, i had to stop the Apache server and restart it. It worked fine after that.
Already restarted your Webserver?
This will force php to reload the php.ini
Go to C:\xamppp\php. Set these values in php.ini:
upload_max_filesize = 1000M
post_max_size = 0M
Create new text file in your wp-admin directory root and name it info.php.
Open info.php and add this line:
<?php phpinfo(); ?>
Save it.
Go to yourwebsitename(probably localhost)/wp-admin/info.php in any web-browser.
On the 8th line you will see: Configuration File (php.ini) Path, in my case it is C:\Windows, meaning it is located on my C drive.
In the 9th line you will see: Loaded Configuration File, and next to it is written C:\xampp\php.ini
So I found my php.ini page that is associated with my wordpress web-site.
Go to that path, and find php.ini.
Open it, and edit:
Search for post_max_size=8M, and change it to post_max_size=1000M
Search for upload_max_filesize=2M, and change it to upload_max_filesize=1000M
Go back to your Admin page → Media → Add New
On the bottom you will see that 2MB has changed to 1000M.
Once you done this process then you must restart your web server or just restart your computer.
Find php.ini [\xampp\php]
Just set these in php.ini:
upload_max_filesize = 1000M;
post_max_size = 1000M;
Rebot server
Stop Apache and MySQL
Start again Apache and MySQL
Go to
C:\drive\xampp(where xampp installed)
simply find php.ini file then in the file search
post_max_size=XXM
upload_max_size=XXM
Change with this code
post_max_size=100M
upload_max_filesize=100M
Don't forget to restart the xampp
Using wamp do the following and hopefully, it will resolve an issue
Make these changes in PHP Options to correct:
max_execution_time 180
memory_limit 512M or your highest available
post_max_size 32M
upload_max_filesize 64M
You also need the change post-max-size.
From the XAMPP panel, click on the ADMIN button on the Apache site.
Then choose to edit php.ini
And add the missing post_max_size to a value you are comfortable with.
post_max_size = 100M
Go to
C:\ drive
or that drive where xampp is installed
click on xampp
find php and open it , there you find php.ini folder
open php.ini file with notepad and find upload_max_filesize and post_max_size in both "up and down find option",change both values to 1000M
I have fixed same issue by changing below parameters to expected value in /etc/php/7.2/apache2/php.ini file
upload_max_filesize = 8M;
post_max_size = 8M;
upload_max_filesize = 8M;
post_max_size = 8M;
Imagine you already changed above values. But what happen when user try to upload large files greater than 8M ?
This is what happen, PHP shows this warning!
Warning: POST Content-Length of x bytes exceeds the limit of y bytes in Unknown on line 0
you can avoid it by adding
ob_get_contents();
ob_end_clean();
You have 2 options for this error:
The file you are uploading is too big, which you need to use smaller file.
Increase the upload size in php.ini to
upload_max_filesize = 9M; post_max_size = 9M;
Go to browser and search for php.ini and then open it, and change these two values:
post_max_size= 1000000000000M
upload_max_filesize= 10000000000000M
If you open the php.ini file using notepad , you can search for these two values by clicking:
cmd + f
You might not be uploading the right zip file. In my case, as a newbie to wordpress(I used to do hardcoding), I installed the zipped file that contained another zip file which is the actual theme neede to be upload. So what what need to do in this case is to unzip the file and locate the "theme_name.zip" inside.
If changing the post_max_size settings from XAMPP folders. It did not work for you try this.
From XAMPP control panel, click config then PHP (php.ini) and edit post_max_size and upload_max_filesize to a higher number in this file instead. Stop Apache server. Start Apache server. This worked for me.
If your objective is to import a theme into your Wordpress then you can manually copy paste your theme into your wp-content->themes folder and extract it of course. I just encountered this and couldn't locate the php.ini file for WAMP.
I have solved my php7 issues on centos 7 by updating /etc/php.ini with these settings:
post_max_size = 500M
upload_max_filesize = 500M
for anyone running PHPMyAdmin inside of docker.
Set the UPLOAD_LIMIT value in the env
from the docs https://github.com/phpmyadmin/docker#environment-variables-summary
UPLOAD_LIMIT - if set, this option will override the default value
for apache and php-fpm (format as [0-9+](K,M,G) default value is
2048K, this will change upload_max_filesize and post_max_size
values)
docker-compose.yml example:
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- UPLOAD_LIMIT=300M
normal docker run:
sudo docker run .... -e UPLOAD_LIMIT=300M
For both of these options you have to rebuild the container
As Optimaz ID pointed out, the code below helped me hide the PHP error message in a case where the user uploads a file larger than the upload_max_filesize and post_max_size set in php.ini (which is almost impossible when a large value is set).
ob_get_contents();
ob_end_clean();

Erro Upload Video into my database [duplicate]

I am getting this error when trying to upload an import on WordPress on my XAMPP local dev environment:
Warning: POST Content-Length of 8978294 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
I changed the upload_max_filesize from 2M to 1000M, but that didn't seem to do anything.
Any ideas?
8388608 bytes is 8M, the default limit in PHP. Update your post_max_size in php.ini to a larger value.
upload_max_filesize sets the max file size that a user can upload while
post_max_size sets the maximum amount of data that can be sent via a POST in a form.
So you can set upload_max_filesize to 1 meg, which will mean that the biggest single file a user can upload is 1 megabyte, but they could upload 5 of them at once if the post_max_size was set to 5.
Changes will take effect after a restart of the server.
Just set these in php.ini:
upload_max_filesize = 1000M;
post_max_size = 1000M;
1. First u will find the php.ini file.
u can find php.ini file from this path. C:\xampp\php or from
xampp folder.
2. Now open php.ini file and change the following:
1. post-max-size (change 8M to 800M).
2. upload-max-filesize (change 2M to 2000M).
3. Now stop the Apache server and MySQL.
4. Now restart Apache server and MySQL.
It worked fine after that.
Enjoy ur working now :)
That's an 8MB post_max_size error.
Set it to a value you're comfortable with.
You will have to change the value of
post-max-size
upload-max-filesize
both of which you will find in php.ini
Restarting your server will help it start working. On a local test server running XAMIP, i had to stop the Apache server and restart it. It worked fine after that.
Already restarted your Webserver?
This will force php to reload the php.ini
Go to C:\xamppp\php. Set these values in php.ini:
upload_max_filesize = 1000M
post_max_size = 0M
Create new text file in your wp-admin directory root and name it info.php.
Open info.php and add this line:
<?php phpinfo(); ?>
Save it.
Go to yourwebsitename(probably localhost)/wp-admin/info.php in any web-browser.
On the 8th line you will see: Configuration File (php.ini) Path, in my case it is C:\Windows, meaning it is located on my C drive.
In the 9th line you will see: Loaded Configuration File, and next to it is written C:\xampp\php.ini
So I found my php.ini page that is associated with my wordpress web-site.
Go to that path, and find php.ini.
Open it, and edit:
Search for post_max_size=8M, and change it to post_max_size=1000M
Search for upload_max_filesize=2M, and change it to upload_max_filesize=1000M
Go back to your Admin page → Media → Add New
On the bottom you will see that 2MB has changed to 1000M.
Once you done this process then you must restart your web server or just restart your computer.
Find php.ini [\xampp\php]
Just set these in php.ini:
upload_max_filesize = 1000M;
post_max_size = 1000M;
Rebot server
Stop Apache and MySQL
Start again Apache and MySQL
Go to
C:\drive\xampp(where xampp installed)
simply find php.ini file then in the file search
post_max_size=XXM
upload_max_size=XXM
Change with this code
post_max_size=100M
upload_max_filesize=100M
Don't forget to restart the xampp
Using wamp do the following and hopefully, it will resolve an issue
Make these changes in PHP Options to correct:
max_execution_time 180
memory_limit 512M or your highest available
post_max_size 32M
upload_max_filesize 64M
You also need the change post-max-size.
From the XAMPP panel, click on the ADMIN button on the Apache site.
Then choose to edit php.ini
And add the missing post_max_size to a value you are comfortable with.
post_max_size = 100M
Go to
C:\ drive
or that drive where xampp is installed
click on xampp
find php and open it , there you find php.ini folder
open php.ini file with notepad and find upload_max_filesize and post_max_size in both "up and down find option",change both values to 1000M
I have fixed same issue by changing below parameters to expected value in /etc/php/7.2/apache2/php.ini file
upload_max_filesize = 8M;
post_max_size = 8M;
upload_max_filesize = 8M;
post_max_size = 8M;
Imagine you already changed above values. But what happen when user try to upload large files greater than 8M ?
This is what happen, PHP shows this warning!
Warning: POST Content-Length of x bytes exceeds the limit of y bytes in Unknown on line 0
you can avoid it by adding
ob_get_contents();
ob_end_clean();
You have 2 options for this error:
The file you are uploading is too big, which you need to use smaller file.
Increase the upload size in php.ini to
upload_max_filesize = 9M; post_max_size = 9M;
Go to browser and search for php.ini and then open it, and change these two values:
post_max_size= 1000000000000M
upload_max_filesize= 10000000000000M
If you open the php.ini file using notepad , you can search for these two values by clicking:
cmd + f
You might not be uploading the right zip file. In my case, as a newbie to wordpress(I used to do hardcoding), I installed the zipped file that contained another zip file which is the actual theme neede to be upload. So what what need to do in this case is to unzip the file and locate the "theme_name.zip" inside.
If changing the post_max_size settings from XAMPP folders. It did not work for you try this.
From XAMPP control panel, click config then PHP (php.ini) and edit post_max_size and upload_max_filesize to a higher number in this file instead. Stop Apache server. Start Apache server. This worked for me.
If your objective is to import a theme into your Wordpress then you can manually copy paste your theme into your wp-content->themes folder and extract it of course. I just encountered this and couldn't locate the php.ini file for WAMP.
I have solved my php7 issues on centos 7 by updating /etc/php.ini with these settings:
post_max_size = 500M
upload_max_filesize = 500M
for anyone running PHPMyAdmin inside of docker.
Set the UPLOAD_LIMIT value in the env
from the docs https://github.com/phpmyadmin/docker#environment-variables-summary
UPLOAD_LIMIT - if set, this option will override the default value
for apache and php-fpm (format as [0-9+](K,M,G) default value is
2048K, this will change upload_max_filesize and post_max_size
values)
docker-compose.yml example:
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- UPLOAD_LIMIT=300M
normal docker run:
sudo docker run .... -e UPLOAD_LIMIT=300M
For both of these options you have to rebuild the container
As Optimaz ID pointed out, the code below helped me hide the PHP error message in a case where the user uploads a file larger than the upload_max_filesize and post_max_size set in php.ini (which is almost impossible when a large value is set).
ob_get_contents();
ob_end_clean();

Why have editing mamps php.ini no effect

I tried to raise the upload_max_filesize value in the php.ini (mamp 2.1.2 with the PHP version 5.4.10). The Server runs on port 80. I found several anwsers here but no one really applies.
When I use the phpinfo () function to get the "Loaded Configuration File" I get the path: /Applications/MAMP/bin/php/php5.4.10/conf/php.ini, but the shown configuration form the phpinfo () don't match with the configuration in my php.ini.
In my php.ini stands upload_max_filesize = 100M the phpinfo () tells me 2M.
After I edited the ini I restared the server and my machine.
So why can't I change the upload_max_filesize?
Edite:
After setting the Port to 8888 the config file is loaded correctly. Maybe there is a conflict with the Apache-Server of the OS?!
This is because MAMP and MAMP PRO overwrites php.ini with a template file every time the services are started. Therefore, to make your desired php.ini changes, you need to change the template.
In my instance using MAMP PRO on OS X, that template was found within:
/Applications/MAMP PRO/MAMP PRO.app/Contents/Resources/
In this folder, you will find several php.ini versions for each version of PHP that is available to you. You will want to edit the .ini file for the PHP version you are running. In my case, that was php5.5.10.ini. After editing, restart your MAMP and your new settings should take effect.
Also you have to edit: post_max_size and memory_limit
post_max_size integer
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.
php ini core manual
Try editing /Applications/MAMP/bin/php/php5.4.10/conf/php.ini
and restart the server.
Or try to set it programmatically
ini_set('upload_max_filesize', '100M');

upload_max_filesize changed in php.ini file, but ini_get still shows 2M

I am no longer trying to change upload_max_filesize with ini_set. I have seen those answers.
I found what I think is the real php.ini using the path from phpinfo(). I have edited the file changing the value from 2M to 10M.
In spite of this, ini_get('upload_max_filesize') still shows 2M and my upload is still failing because the file is larger than this.
What am I missing?
There are four things to check if experiencing an issue like this:
Ensure that the correct php.ini is being loaded by using phpinfo()
Ensure that no extra ini files are being loaded via the --with-config-file-scan-dir option
That you haven't used ini_set() anywhere in your code to override the setting
That you restarted your web server after making any changes to ini files
Less commonly, you can also configure PHP to be run with the -d or --define directive which can set this setting at runtime. This would also be shown in the phpinfo() results.

PHP ini file and session deletion

Posted a question about an error I was getting the over day about Memory exceed when handling an image resize.
Managed to solve the problem with a local php.ini file and setting
[PHP]
upload_max_filesize = 5M
post_max_size = 5M
memory_limit = 64M
Now I realised I have a whole new problem :)
If I access a php file in the directoy with my custom local php.ini, it will override the original and
remove all my $_SESSION's
If I remove the local php.ini, it doesnt remove my sessions but then the image resize gives me a memory limit exceed error.
Any ideas? Can i set a php.ini (local) to just override the 3 parameters I want?
Thanks in advance,
P.s. tried setting it through CPANEL on tweak php.ini but those values seemed to be ignored.
Result
Had to contact tech support and they had to manually update my ini files.
If you have full control over your server, on most linux distros there is a conf.d directory which is loaded after all of the default php configuration, so you can override things. On ubuntu for example, that is /etc/php5/conf.d/, there you can create a file 'my.ini' (name doesn't matter as long as it ends in .ini) which will be automatically included.
If you don't have access to the entire server, there are several ways of altering those without overwriting everything:
Add the php configuration to .htaccess (if using Apache)
Set those options using ini_set('option', 'value'); in your php script
If you're going for the .htaccess route, here is an example, just append to end of your .htaccess file:
php_value upload_max_filesize 5M
php_value post_max_size 5M
php_value memory_limit 64M

Categories