My Laravel app can't validate uploaded images. It returns this error message:
Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)
I know enabling php_fileinfo.dll/php_fileinfo.so at php.ini fixes it. But I don't have access to my remote server's php.ini file.
So I thought is there any other way to enable it? And how? Maybe I can use PHP's ini_set()
methods? I tried using it like:
ini_set('extension', 'php_fileinfo.so');
But it doesn't work.
I also read you can override php.ini settings using .htaccess files. But how?
As Laravel's default, my .htaccess file is:
<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>
How should you put such additionals in there?
If you only want to upload images then it might help you.
$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
}
If above code doen't work then it might help you -->> https://github.com/thephpleague/flysystem/commit/0ec96b1104e57bfcf0e40d6169c8e203b7942b34
Create a .htaccess
file where your root is and then do this
php_value extension=php_fileinfo.dll
or
php_admin_flag extension=php_fileinfo.dll
If you have cpanel just go to
Select PHP Version
and search for the extension
fileinfo
check it and you're good to go.
create own php.ini
file in root folder of your directory.
example if you are making changes on a server then it should be inside the public.html folder.
create file name php.ini it will override the settings. just add in the file
extension=php_fileinfo.dll