【问题标题】:mime_content_type() function not definedmime_content_type() 函数未定义
【发布时间】:2013-01-26 08:56:23
【问题描述】:

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

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

【问题讨论】:

标签: php


【解决方案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

【讨论】:

    【解决方案2】:

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

    Windows 用户必须将捆绑的 php_fileinfo.dll DLL 文件包含在 php.ini 来启用这个扩展。

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

    Read more

    【讨论】:

    • 最近,php_fileinfo 扩展
    【解决方案3】:

    如果您使用共享主机,fileinfo PHP extension 可能未启用或未安装。

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

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

    【讨论】:

      【解决方案4】:

      我将我的 php 版本从 7.1 更改为 5.6,它适用于我

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          更新

          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

          【讨论】:

          • finfo 是一个 pecl 扩展,所以如果没有安装扩展将无法使用
          • @Okneloper 不再,引用安装文档“This extension is enabled by default as of PHP 5.3.0. Before this time, fileinfo was a PECL extension but is no longer maintained therephp.net/manual/en/fileinfo.installation.php
          • 但是我测试过的 5.6 的安装给了我一个“致命错误:找不到类 'finfo'”
          • @Okneloper 是 Windows 平台吗?如果是,那么你需要这样做,Windows users must include the bundled php_fileinfo.dll DLL file in php.ini to enable this extension.
          • 不,不是。这是一个带有 Cpanel 的 CentOS。不过感谢您的努力。
          猜你喜欢
          • 2018-01-31
          • 2011-07-17
          • 1970-01-01
          • 2014-10-01
          • 2014-06-19
          • 1970-01-01
          • 1970-01-01
          • 2021-10-16
          • 2018-12-20
          相关资源
          最近更新 更多