如何在php中启用php_fileinfo扩展?

如何在php中启用php_fileinfo扩展?,php,image,.htaccess,validation,laravel,Php,Image,.htaccess,Validation,Laravel,我的Laravel应用无法验证上载的图像。它返回以下错误消息: 无法猜测mime类型,因为没有可用的猜测器(您知道吗 启用php_fileinfo扩展?) 我知道启用php_fileinfo.dll/php_fileinfo.so at php.ini可以修复它。但是我无法访问我的远程服务器的php.ini文件 所以我想有没有其他方法来实现它?怎么做?也许我可以使用PHP的ini\u set()方法?我试着像这样使用它: ini_set('extension', 'php_fileinfo.s

我的Laravel应用无法验证上载的图像。它返回以下错误消息:

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

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

所以我想有没有其他方法来实现它?怎么做?也许我可以使用PHP的
ini\u set()
方法?我试着像这样使用它:

ini_set('extension', 'php_fileinfo.so');
但它不起作用

我还了解到,您可以使用.htaccess文件覆盖php.ini设置。但是怎么做呢

作为Laravel的默认设置,my.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>

选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

您应该如何在其中添加这些附加内容?

如果您只想上传图像,那么它可能会对您有所帮助

$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
}

如果上面的代码不起作用,那么它可能会帮助您-->>

在根目录下创建一个
.htaccess
文件,然后执行此操作

php_value extension=php_fileinfo.dll


如果你有cpanel,就去

选择PHP版本

并搜索扩展名

文件信息


检查一下就可以了。

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

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

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

extension=php_fileinfo.dll

选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
suPHP\u ConfigPath/home/username/public\u html/子文件夹
子文件夹是我希望为我的应用程序提供服务的laravel项目。
我的子文件夹根文件夹中的php.ini文件&对于enable PHPFileinfo,我在php.ini文件中编写这些代码
extension=fileinfo.so
扩展=pdo.so
extension=pdo_.so

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

然后单击“查看”左侧选项卡


然后单击provision,然后单击done。它对我有效(我花了3个小时尝试安装/启用fileinfo)

一些共享主机仍然允许使用私有php.ini文件进行此类操作。但是,大多数主机不允许,如果这适用于您的主机,您需要联系您的支持团队,看看他们是否会启用它。在大多数情况下,他们不会启用,因为更改将影响所有用户,并且可能会打乱其他人的应用程序。我尝试了这个方法,并进行了验证在我的.htcacces uder Laravel的“public”目录中没有。它不起作用:服务器返回“500 Internal server Error”。这在你的目录中起作用了吗?你能详细介绍一下.htaccess文件吗?
extension=php_fileinfo.dll
<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 mod_suphp.c>
suPHP_ConfigPath /home/username/public_html/subfolder
</IfModule>

</IfModule>
subfolder is the laravel project where I want to serve my application.

php.ini file in my subfolder's root folder & for enable PHPFileinfo I write those code in php.ini file

extension=fileinfo.so
extension=pdo.so
extension=pdo_mysql.so