简体   繁体   中英

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.

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

ie,

<?php
phpinfo();
?>

edit your php.ini file and set:

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

and restart apache.

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.

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

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 .

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM