Php 在Laravel中上载小文件,但不上载大文件

Php 在Laravel中上载小文件,但不上载大文件,php,laravel,Php,Laravel,我在控制器中有这个动作 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 siz

我在控制器中有这个动作

    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";
    }
  }
}
它适用于2MB这样的小文件大小,但不适用于4MB文件大小。 对于4MB或更大的内存,验证时会出错。在上面的代码中有以下代码

 if ($validator->fails()) {

       return "error validation";
      }

它提供此自定义错误
错误验证
。我已经在配置php.ini的max upload limit和post limit。

php.ini
中检查
max\u file\u uploads
max\u post\u size
。它显示从
phpinfo()
编辑您的
php.ini
文件并设置:

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

然后重新启动apache。

其他答案指的是仅说明directiress

考虑到php.ini和

首先检查您的
php.ini

对于
upload\u max\u filesize
post\u max\u size
并更改为所需的文件大小

upload_max_filesize = 100M
post_max_size = 100M
你的规则应该是这样的

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

您应通过以下方式检查图像的文件格式:

'uploaded' => 'mimes:jpeg,bmp,png'
阅读更多关于

更新: 因为提问者没有注意到服务器正在使用哪个php.ini文件。我正在相应地更新我的答案,以便对将来有类似问题的人有用

查找服务器当前使用的php.ini文件的完整配置

对于Linux

php -i | grep php.ini
窗户

php -i | find /i "Configuration File"
从php文件

i、 e


我找到了答案,上面提到的在php.ini中对
upload\u max\u filesize
post\u max\u size
进行更改的内容实际上是解决问题所述问题的唯一方法

唯一的问题是我正在使用wamp,显然wamp有多个php.ini文件,一个在php文件夹中,一个在apache文件夹中。我在PHP文件夹中进行了更改,而应更改apache文件夹中的文件夹。

对于WAMP服务器: 转到
/wamp64/bin/apache/apache(您的版本)/bin/
并打开
php.symlink(.ini)
和变化
根据您的需要发布最大大小、内存限制、上传最大文件大小

对于在nginx上运行的laravel应用程序,请重新启动wamp服务器

  • 识别您的php ini文件:

    php-i | grep php.ini

  • 编辑cli和fpm文件以确保:

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

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

  • 将这些更改为您首选的限制:

    立柱最大尺寸=1G

    上载\u最大\u文件大小=1G

    内存限制=1G

  • 重新启动php fpm

    服务php7.2-fpm重启

  • 重新加载nginx

    服务nginx重新加载


  • post_max_size=100M,上传_max_filesize=70M@Chelsea编辑完
    php.ini
    后,您是否运行了
    服务apache2 restart
    sudo服务apache2 restart
    我重新启动了所有wamp服务,包括mysql和apacheSet内存\u限制为1G!我知道你已经在
    php.ini
    中设置了
    upload\u max\u filesize
    post\u max\u size
    ,但是你检查过这些设置是否被应用了吗?我经常发现php.ini中的设置在其他地方被覆盖,
    ini得到(“post\u max\u size”)
    返回什么?您是否检查了
    max\u execution\u time
    并增加了默认值?查看
    $validator->messages()时会得到什么?@您是否已在模型中设置验证规则。参考此链接并设置文件大小验证,如$rules=array('file'=>'必需| max:10000 | mimes:doc,docx')小文件中的扩展名是什么?大文件?可能是扩展名大文件错了。没有一个答案帮助解决了我的问题。我该怎么办,也许有人会更新他们的答案,这样我就可以获奖。@Chelsea你的答案和
    phuti
    给出的答案有什么区别,因为你所需要的只是在多个文件中更改
    上传最大文件大小
    发布最大文件大小
    。我很惊讶你没有标记他的答案,相反,你可以用他的建议发布一个答案。@Letmesuckitbay在提问之前,我做了很少的研究,我知道我必须更改upload_max_filesize和post_max_size,我也这么做了,但仍然不起作用,这就是我发布这个问题的原因。看看我提到的问题的最后一部分,php.ini是按要求更新,但仍不工作。不管怎样,如果答案更新了,我会非常高兴地奖励你。在我的例子中,实际上“起作用”的php.ini文件就是程序文件(x86)中的一个文件。直到我在php.ini中添加/取消注释临时目录,它才起作用:upload\u tmp\u dir=/upload tmp dir你在使用linux机器吗?内存限制256帮助了我(默认值128)
    <?php
    phpinfo();
    ?>