如何在PHP中启用php_fileinfo扩展?

时间:2015-03-11 08:22:18

标签: php image .htaccess validation laravel

我的Laravel应用无法验证上传的图片。它返回此错误消息:

  

无法猜测mime类型,因为没有可用的猜测器(你呢?   启用php_fileinfo扩展名?)

Laravel error message

我知道在php.ini上启用php_fileinfo.dll / php_fileinfo.so会修复它。但是我无法访问我的远程服务器的php.ini文件。

所以我认为有没有其他方法可以启用它?如何?也许我可以使用PHP的ini_set()方法?我尝试使用它:

ini_set('extension', 'php_fileinfo.so');

但它不起作用。

我还读过你可以使用.htaccess文件覆盖php.ini设置。但是如何?

作为Laravel的默认设置,我的.htaccess文件是:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

你应该如何把这些额外的东西放在那里?

6 个答案:

答案 0 :(得分:1)

创建一个{root}所在的.htaccess文件,然后执行此操作

php_value extension=php_fileinfo.dll

php_admin_flag extension=php_fileinfo.dll

答案 1 :(得分:1)

如果您使用的是WHM,请转到Easy Apache,搜索fileinfo(在搜索字段中)并启用它(我找到了operator/=php5.5php5.6

然后点击左侧的“查看”标签。

然后单击供应,并完成。它对我有用(我花了3个小时尝试安装/启用fileinfo)

答案 2 :(得分:0)

如果您只想上传图片,那么它可能对您有帮助。

$image_size_info = @getimagesize($filename); //surpress errors(@) if not image
if( empty($image_size_info) ) $mime_type = "";
else $mime_type = @image_type_to_mime_type( $image_size_info[2] );

//safety for all cases:
if( empty($mime_type) ) $mime_type = "";

if(  strpos($mime_type, "image/") === false  )
{
//not an Image !
} 
else 
{
  //proceed file upload
}

如果以上代码无效,那么它可能对您有所帮助 - &gt;&gt; https://github.com/thephpleague/flysystem/commit/0ec96b1104e57bfcf0e40d6169c8e203b7942b34

答案 3 :(得分:0)

如果您有cpanel,请转到

  

选择PHP版本

并搜索扩展名

  

fileinfo

检查一下,您就很好了。

答案 4 :(得分:0)

在目录的根文件夹中创建自己的php.ini文件。

例如,如果要在服务器上进行更改,则它应位于public.html文件夹中。

创建文件名php.ini,它将覆盖设置。 只需添加文件

extension=php_fileinfo.dll

答案 5 :(得分:0)

hist