【问题标题】:php settings on local vs production server (laravel)本地与生产服务器(laravel)上的php设置
【发布时间】:2016-07-23 22:10:17
【问题描述】:

我做了一个 laravel 项目,用户可以上传图片。我在本地服务器上测试了这个项目,没有发现任何问题。将项目上传到生产服务器后,我发现,当用户尝试上传大于 1.5mb 大小的图像时,它显示错误 TokenMismatchException in VerifyCsrfToken.php line 67 虽然我有 我的表单中的 csrf 令牌。经过几次搜索,我发现有人建议更改 php.ini 文件中的两个内容并重新启动 nginx 服务器。所以我改变了post_max_size = 40Mupload_max_filesize = 40M,也改变了max_execution_time = 0,这意味着无限的执行时间。然后我运行这个命令 sudo service nginx restartphp artisan up 并尝试上传一个 21MB 大小的图像。当我按下提交按钮时,上传图像需要一些时间并最终抛出令牌不匹配异常。我正在使用 ubuntu 16.04 进行本地测试。请问这个问题有什么解决办法吗? 我正在分享代码: 查看:

{!! Form::open(['url'=> "pro/{$user->id}/upload",'files'=> 'true', 'class'=> 'form-horizontal']) !!}

     <input id="filebutton" name="image" class="input-file" type="file">
     <input name="title" class="form-control" type="text" required="">
     <button type="submit" class="btn btn-danger btn-block btn-flat">Upload</button>
     {!! Form::close() !!}

控制器:

public function save($id, PortfolioRequest $request)
  {
    $pro = User::findOrFail($id);
    $file = $request->file('image');
    $original_path = public_path('uploads/portfolio/original/');

    $file_name = str_random(64).'_'.$request->title.'_user_'. $pro->id . '.' . $file->getClientOriginalExtension();

    Image::make($file)
            ->resize(750,null,function ($constraint) {
              $constraint->aspectRatio();
               })
            ->save($original_path . $file_name);


    $portfolio = Portfolio::create([
      'user_id' => $id,
      'image'   => $file_name,
      'title'   => $request->title
    ]);

    return redirect("pro/{$id}/portfolio");
  }

生成的表格:

<form method="POST" action="www.xxxx.com/pro/3/upload" accept-charset="UTF-8" class="form-horizontal" enctype="multipart/form-data"><input name="_token" type="hidden" value="EsH8KaSSoXovzjZ0RnWWi7eEwNWNgYlBVRm7yUYr">

【问题讨论】:

  • 生成的Form html里面的token怎么看?
  • @MartinHenriksen 我已经补充了
  • 之前经历过会话搞砸并在发布请求上创建新会话,因此令牌不匹配。

标签: php nginx laravel-5.2 production-environment


【解决方案1】:

尝试将此添加到您的&lt;header&gt;

<meta name="csrf-token" content="{{ csrf_token() }}" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2015-02-26
    • 2010-09-15
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多