17

I am getting the post too large exception when I try to upload files which are more than 2 MB in size and I've already tried everything like increasing the post_max_size and max_upload_size in php.ini file but I am still getting the same error. When I comment the handler function in validatepostsize.php file it shows token mismatch error:

Sankit Saini
  • 183
  • 1
  • 1
  • 4
  • 1
    Did you restart the web server and/or php after changing the setting? – markdwhite Apr 18 '17 at 06:08
  • Yes i tried restarting both apache and laravel loacal development server but still getting the error – Sankit Saini Apr 18 '17 at 06:30
  • 1
    Did you verify that your changes are in effect? Try doing a `phpinfo()` and search for `post_max_size`. – Chris Magnussen Apr 18 '17 at 08:09
  • Allthough you're not getting a 413, don't forget to check the max request size in the webserver's config (apache: LimitRequestBody / nginx: client_max_body_size). On apache it's defaulted to 0 but nginx does have a restricted value set on default. – trommelaap Apr 18 '17 at 08:36
  • I changed post_max_size in php.ini file and it shows in phpinfo() that changes that I made are in effect but still getting the same error. – Sankit Saini Apr 18 '17 at 12:25

5 Answers5

27

I think you can check the following parameters in your php.ini file like:

upload_max_filesize = 40m
post_max_size = 50m

After restart your server like (apache)

Hope this work for you!

AddWeb Solution Pvt Ltd
  • 20,310
  • 5
  • 23
  • 55
9

First, check your PHP version.

php -v

The command below will print the path to the php.ini file that your server is using.

php -i | grep php.ini

Next.

sudo nano /etc/php/7.4/cli/php.ini

The values of post_max_size, upload_max_filesize and memory_limit by default have the value of 8M, 2M, and 128M respectively.

Search for those variables and change their values, whilst ensuring that the sizes follow the same ratio as the default values.

See example below:

post_max_size = 2G
upload_max_filesize = 1G
memory_limit = 3G

For "heavy-loaded sites", it is useful to have FPM installed and running.

sudo apt install php7.4-fpm -y
sudo service php7.4-fpm start

Finally, restart your web server.

sudo service apache2 restart
Tumelo Mapheto
  • 387
  • 5
  • 7
7

One of the issues is that the Laravel PHP artisan serve local development server uses the php.ini under PHP/CLI instead of under PHP/apache2

So if you are having this issue while developing with PHP artisan serve, go and fetch the php.ini that's under the /etc/php[version]/cli folder.

MarkSkayff
  • 1,224
  • 9
  • 12
1

Actually I am looking for the same answer for the same issue. I have found out that the issue can be resolve with an edit of .htaccess file.

Add the below code in the file.

php_value upload_max_filesize 50M
php_value post_max_size 50M

This above two line will resolve the issue but if you are adding this much size then the line below give will save you from future issue. of like execution time expire and all.

php_value max_input_time 120
php_value max_execution_time 120
always-a-learner
  • 966
  • 2
  • 12
  • 37
1

Its not the best solution just to change parameters in php.ini and then restart apache:

upload_max_filesize = 128M
post_max_size = 128m

//or whatever value you think is right

Restart apache like this: sudo service apache2 restart

The best way as for me is to catch PostTooLargeException using Error Handling of laravel: Error Handling

For a detailed answer how to catch PostTooLargeException using Error Handling you can see my answer in this thread: thread with full answer. I struggled like 2 days before I fully figured how to achieve that.

Happy coding!