如何在 PHP 中启用 php_fileinfo 扩展?

don*_*ona 5 php validation .htaccess image laravel

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

无法猜测 mime 类型,因为没有可用的猜测器(您是否启用了 php_fileinfo 扩展?)

Laravel 错误信息

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

所以我想还有其他方法可以启用它吗?如何?也许我可以使用 PHP 的ini_set()方法?我尝试使用它,例如:

ini_set('extension', 'php_fileinfo.so');
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我还读到您可以使用 .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>
Run Code Online (Sandbox Code Playgroud)

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

Say*_*Ali 9

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

例如,如果您要在服务器上进行更改,那么它应该位于 public.html 文件夹内。

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

extension=php_fileinfo.dll
Run Code Online (Sandbox Code Playgroud)


小智 5

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

然后单击“审阅”左侧选项卡。

然后点击配置,就完成了。它对我有用(我花了 3 个小时尝试安装/启用文件信息)


Vis*_*oni 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
}
Run Code Online (Sandbox Code Playgroud)

如果上面的代码不起作用,那么它可能会帮助你 -->> https://github.com/thephpleague/flysystem/commit/0ec96b1104e57bfcf0e40d6169c8e203b7942b34