Chelsea
Chelsea

Reputation: 751

Small file get uploaded but not large file in Laravel

I have this action in controler

    public function upload() {
  // getting all of the post data
  $file = array('image' => Input::file('image'));
  //return $file;
  // setting up rules
  $rules = array('image' => 'required'); //mimes:jpeg,bmp,png and for max size max:10000
  // doing the validation, passing post data, rules and the messages
  $validator = Validator::make($file, $rules);
  if ($validator->fails()) {
    // send back to the page with the input data and errors
   // return Redirect::to('upload')->withInput()->withErrors($validator);
   return "error validation";
  }
  else {
    // checking file is valid.
    if (Input::file('image')->isValid()) {
      $destinationPath = 'myuploads'; // upload path
      $extension = Input::file('image')->getClientOriginalExtension(); // getting image extension
      $fileName = Input::file('image')->getClientOriginalName();
     // $fileName = rand(11111,99999).'.'.$extension; // renameing image
      Input::file('image')->move($destinationPath, $fileName); // uploading file to given path

      return "upload success";
    }
    else {
      // sending back with error message.
      Session::flash('error', 'uploaded file is not valid');
      return "error";
    }
  }
}

It works for small file size like 2MB but won't work for 4MB file size. For 4MB or more it gets error in validation.In the code above there's this code

 if ($validator->fails()) {

       return "error validation";
      }

It gives this custom error error validation. I have already worked on configuring php.ini for max upload limit and post limit.

Upvotes: 25

Views: 47810

Answers (6)

Timothy
Timothy

Reputation: 4285

For laravel apps running on nginx..

  1. Identify your php ini file:

    php -i | grep php.ini

  2. Edit both the cli and the fpm files to be sure:

    vim /etc/php/7.2/cli/php.ini

    vim /etc/php/7.2/fpm/php.ini

  3. Change these to your prefered limits:

    post_max_size = 1G

    upload_max_filesize = 1G

    memory_limit = 1G

  4. Restart php fpm

    service php7.2-fpm restart

  5. Reload nginx

    service nginx reload

Upvotes: 4

RITHU
RITHU

Reputation: 1

FOR WAMP SERVER: Go to /wamp64/bin/apache/apache(your version)/bin/ and open php.symlink(.ini) and change
post_max_size,memory_limit,upload_max_filesize as per your need. and restart the wamp server.

Upvotes: 0

Sulthan Allaudeen
Sulthan Allaudeen

Reputation: 11310

Other answers refers saying only about the php.ini directiress.

I would like to give answer considering both php.ini and the Laravel Validation Rule

First check your php.ini

For the upload_max_filesize and post_max_size and change to your desired file size

upload_max_filesize = 100M
post_max_size = 100M

You shall have your rule like this

public static $updaterules = array(
    'uploadedimage' => 'image|max:5000'            
    );

Additional information :

You shall check for the file format for image by

'uploaded' => 'mimes:jpeg,bmp,png'

Read more about Laravel validation here

Update :

As the questioner didn't noticed which php.ini file is being used by the server. I am updating my answer accordingly so it might be useful for someone who has similar problems in future

To find the full configuration about the php.ini file which is currently being used by your server.

For Linux

php -i | grep php.ini

For Windows

php -i | find /i "Configuration File"

From a php file

i.e.,

<?php
phpinfo();
?>

Upvotes: 64

Chelsea
Chelsea

Reputation: 751

Well I found the answer, The things mentioned above to make change in php.ini about upload_max_filesize and post_max_size are infact the only thing to solve the problem mentioned by the question.

The only problem was that I am using wamp and apparently wamp has multiple php.ini files one in php folder and one in apache folder. I made changes in PHP folder when the change should be made to the one inside apache folder.

Upvotes: 14

Junius L
Junius L

Reputation: 16122

edit your php.ini file and set:

memory_limit = 32M
upload_max_filesize = 70M
post_max_size = 100M

and restart apache.

Upvotes: 13

vitalik_74
vitalik_74

Reputation: 4591

Check max_file_uploads and max_post_size in php.ini. It shows from phpinfo()

Upvotes: 0

Related Questions