我的Laravel应用无法验证上传的图片。它返回此错误消息:
无法猜测mime类型,因为没有可用的猜测器(你呢? 启用php_fileinfo扩展名?)
我知道在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>
你应该如何把这些额外的东西放在那里?
答案 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.5
和php5.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