Laravel 4 - 没有可用的猜测者问题

Posted

技术标签:

【中文标题】Laravel 4 - 没有可用的猜测者问题【英文标题】:Laravel 4 - no guessers available issue 【发布时间】:2014-05-28 17:51:33 【问题描述】:

我收到此错误:LogicException: Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?) 在尝试上传图像时。 我启用了 php_fileinfo 扩展并重新启动了 Wamp Web 服务器,但我仍然无法解决这个问题。我错过了什么?谢谢

以下是我的代码:

型号:Product.php

class Product extends Eloquent 

protected $fillable = array('category_id', 'title', 'description', 'price', 'availability', 'image');

public static $rules = array(
    'category_id'=>'required|integer',
    'title'=>'required|min:2',
    'description'=>'required|min:20',
    'price'=>'required|numeric',
    'availability'=>'integer',
    'image'=>'required|image|mimes:jpeg,jpg,bmp,png,gif|max:3000',
);

public function category() 
    return $this->belongsTo('Category');

控制器:ProductsController.php

 public function postCreate() 
    $validator = Validator::make(Input::all(), Product::$rules);

    if($validator->passes()) 
        $product = new Product;
        $product->category_id = Input::get('category_id');
        $product->title = Input::get('title');
        $product->description = Input::get('description');
        $product->price = Input::get('price');

        $image = Input::file('image');
        $filename = date('Y-m-d-H:i:s')."-".$image->getClientOriginalName();
        Image::make($image->getRealPath())->resize(468,249)->save('public/img/products/'.$filename);
        $product->image = 'img/products/'.$filename;
        $product->save();

        return Redirect::to('admin/products/index')
            ->with('message', 'Product Created');
    

    return Redirect::to('admin/products/index')
        ->with('message', 'Something went wrong')
        ->withErrors($validator)
        ->WithInput();

查看次数:Index.blade.php

   Form::open(array('url'=>'admin/products/create', 'files'=>true)) 
    <p>
         Form::label('category_id', 'Category') 
         Form::select('category_id', $categories) 
    </p>
    <p>
         Form::label('title') 
         Form::text('title') 
    </p>
    <p>
         Form::label('description') 
         Form::textarea('description') 
    </p>
    <p>
         Form::label('price') 
         Form::text('price', null, array('class'=>'form-price')) 
    </p>
    <p>
         Form::label('image', 'Choose an image') 
         Form::file('image') 
    </p>
     Form::submit('Create Product', array('class'=>'secondary-cart-btn')) 
     Form::close() 

【问题讨论】:

尝试在您的 php 配置文件中更改上传文件大小限制 @edvinas.me 你提到的文件大小限制是upload_max_filesize?我将其设置为较大的值 upload_max_filesize = 200M 但仍然无法解决此问题。有点奇怪。 您是否在代码中设置了哑剧?像这样:'file' =&gt; 'mimes:jpeg,bmp,png|max:3000'。不看代码很难提供任何进一步的建议。 您好,感谢您的回复!我添加了部分代码。我已经添加了哑剧规则。有什么建议吗? 谁能帮我解释一下?谢谢! 【参考方案1】:

将 php.ini 中的这一行取消注释到 php 文件夹中。

extension=php_fileinfo.dll

并重新启动服务器(再次输入“php artisan serve”)。这种方法行得通!

【讨论】:

运行 XAMPP - 为我工作 我可以确认取消注释 extension=php_fileinfo.dll 为我在 WAMP 上工作,谢谢先生【参考方案2】:

打开 php.ini 文件,您可以找到 ;extension=php_fileinfo.dll 删除半列到 extension=php_fileinfo.dll 将正常工作,然后重新启动您的 apache 服务器或 xampp ,wampp 您正在使用的任何环境

【讨论】:

【参考方案3】:

我认为是 WAMP Web 服务器的错误。我切换到 XAMPP Web 服务器,它工作正常。

非常感谢。

【讨论】:

FYKI,我遇到了 XAMPP 问题,我从 xampp/php/php.ini 文件的行 extension=php_fileinfo.dll 中删除了注释,然后重新启动了 apache,它对我有用。 谢谢@Unfragile,这就是问题所在。

以上是关于Laravel 4 - 没有可用的猜测者问题的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Echo 没有收到推送者的通知

Laravel 需要 Mcrypt PHP 扩展

Laravel 需要 Mcrypt PHP 扩展

Laravel 需要 Mcrypt PHP 扩展

启用 php_fileinfo 扩展

在 laravel npm 运行开发错误: