【问题标题】:Small file get uploaded but not large file in Laravel在 Laravel 中上传小文件但不是大文件
【发布时间】:2015-04-16 06:15:50
【问题描述】:

我在控制器中有这个动作

    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";
      }

它给出了这个自定义错误error validation。我已经为最大上传限制和发布限制配置了 php.ini。

【问题讨论】:

  • 我知道您在php.ini 中设置了upload_max_filesizepost_max_size,但您是否检查过这些设置是否已应用?我经常发现 php.ini 中的设置在其他地方被覆盖,ini_get('post_max_size') 返回什么?
  • 您是否检查了max_execution_time 并增加了默认值? Related
  • 查看$validator->messages();会得到什么?
  • @Chelsea 您是否在模型中设置了验证规则。请参考此链接laravel validation 并设置文件大小验证,例如 $rules = array('file' => 'required|max:10000|mimes:doc,docx')
  • 小文件的扩展名是什么?在大文件中?可能是扩展大文件错误。

标签: php laravel


【解决方案1】:

其他答案仅指php.inidirectiress。

考虑到 php.ini 和 Laravel Validation Rule,我想给出答案

首先检查您的php.ini

对于upload_max_filesizepost_max_size 并更改为您想要的文件大小

upload_max_filesize = 100M
post_max_size = 100M

你应该有这样的规则

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

附加信息:

您应该检查图像的文件格式

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

阅读更多关于Laravel validation here的信息

更新:

由于提问者没有注意到服务器正在使用哪个 php.ini 文件。我正在相应地更新我的答案,因此它可能对将来遇到类似问题的人有用

查找有关您的服务器当前正在使用的 php.ini 文件的完整配置。

适用于 Linux

php -i | grep php.ini

对于 Windows

php -i | find /i "Configuration File"

来自一个 php 文件

即,

<?php
phpinfo();
?>

【讨论】:

  • 直到我在 php.ini 中添加/取消注释临时目录才起作用:upload_tmp_dir = /upload-tmp-dir
  • 你用的是linux机器吗?
【解决方案2】:

编辑您的php.ini 文件并设置:

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

然后重启 apache。

【讨论】:

  • memory_limit 256 帮助了我(默认 128)
【解决方案3】:

好吧,我找到了答案,上面提到的在 php.ini 中对upload_max_filesizepost_max_size 进行更改的事情实际上是解决问题提到的问题的唯一方法。

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

【讨论】:

  • 没有一个答案有助于解决我的问题..我该怎么办,也许有人会更新他们的答案,以便我可以奖励。
  • @Chelsea 你的答案和phuti 给出的答案有什么区别,因为你只需要在多个文件中更改upload_max_filesizepost_max_size。我很惊讶你没有标记他的答案,而不是根据他的建议发布答案。
  • @LetmeSuckitBaby 在提出问题之前我没有做任何研究,我知道我必须更改 upload_max_filesize 和 post_max_size 我也这样做了,但它仍然没有工作,这就是我发布这个问题的原因。看看我提到的问题的最后一部分 php.ini 已根据需要进行更新,但仍然无法正常工作。如果答案更新,我很乐意以任何方式奖励。
  • 在我的例子中,实际上是“代理”的 php.ini 文件是程序文件中的一个(x86)
【解决方案4】:

对于在 nginx 上运行的 laravel 应用..

  1. 识别你的 php ini 文件:

    php -i | grep php.ini

  2. 编辑 cli 和 fpm 文件以确保:

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

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

  3. 将这些更改为您喜欢的限制:

    post_max_size = 1G

    upload_max_filesize = 1G

    memory_limit = 1G

  4. 重启php fpm

    服务 php7.2-fpm 重启

  5. 重新加载 nginx

    服务 nginx 重新加载

【讨论】:

    【解决方案5】:

    php.ini 中检查max_file_uploadsmax_post_size。它显示来自phpinfo()

    【讨论】:

    • post_max_size = 100M & upload_max_filesize = 70M
    • @Chelsea 在编辑你的php.ini 之后,你运行service apache2 restart 还是sudo service apache2 restart
    • 我重启了所有wamp服务,包括mysql和apache
    • 将 memory_limit 设置为 1G 以确保!
    【解决方案6】:

    对于 WAMP 服务器: 转到/wamp64/bin/apache/apache(your version)/bin/ 并打开php.symlink(.ini) 并根据您的需要更改
    post_max_size,memory_limit,upload_max_filesize。 并重新启动 wamp 服务器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-17
      • 2017-06-01
      • 2017-04-21
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多