21

我正在使用该mime_content_type()功能进行文件上传,它在本地主机上运行良好但是我在我的实时服务器上遇到以下错误:

致命错误:调用未定义函数 mime_content_type()

4

6 回答 6

16

更新

mime_content_type()不再被弃用,php7 现在已经支持这个功能。

我的答案的早期版本:

mime_content_type()已弃用,可能是因为 [fileinfo][1] 可以为您提供有关文件的信息以及更多信息。

您可以使用 finfo() 如下所示,

function _mime_content_type($filename) {
    $result = new finfo();

    if (is_resource($result) === true) {
        return $result->file($filename, FILEINFO_MIME_TYPE);
    }

    return false;
}

参考:https ://stackoverflow.com/a/1263977/1161412

[1]: http: //php.net/manual/en/class.finfo.php

于 2015-01-28T16:53:47.867 回答
15

您必须打开mime_magic扩展程序。检查您的 php.ini 并查看 phpinfo()。顺便说一下,这个功能已被弃用,因为 PECL 扩展Fileinfo以更简洁的方式提供了相同的功能(以及更多功能)。

Windows 用户必须在 php.ini 中包含捆绑的 php_fileinfo.dll DLL 文件才能启用此扩展。

libmagic 库与 PHP 捆绑在一起,但包含 PHP 特定的更改。维护了一个名为 libmagic.patch 的针对 libmagic 的补丁,可以在 PHP 文件信息扩展源中找到该补丁。

阅读更多

于 2013-02-11T09:33:28.163 回答
1

PHP 8

  1. 编辑您的php.ini文件并取消注释extension=fileinfo

  2. 重新启动您的 HTTP 服务器(例如 Apache)。

  3. echo mime_content_type($path_absolute.$file);//Outputs: application/pdf

PHP 7

  1. 编辑您的php.ini文件并取消注释extension=php_fileinfo.dll

  2. 重新启动您的 HTTP 服务器(例如 Apache)。

  3. echo mime_content_type($path_absolute.$file);//Outputs: application/pdf

于 2020-12-12T22:20:13.317 回答
1

如果您在共享主机上,则可能未启用或未安装fileinfo PHP 扩展。

如果未启用,请导航到 CPanel 的软件部分(如果您不使用 CPanel,请查阅控制面板的文档)并单击选择 PHP 版本(或与之相关的内容)并通过选中其框启用扩展并保存您的操作。

如果未安装,则该扩展将不会成为 PHP 扩展的一部分,如果您在 Windows上cPanel > Software > Select PHP Version > Extensions,请编辑您的php.ini文件并取消注释。extension=php_fileinfo.dll如果其中任何一个不起作用,请咨询您的托管服务提供商的文档。

于 2019-12-26T10:40:13.517 回答
-1

我将我的 php 版本从 7.1 更改为 5.6 它对我有用

于 2019-07-03T07:15:56.590 回答
-2

可能缺少 \php\extras\magic.mime 文件。

于 2018-02-13T11:23:36.590 回答