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_fileinfo.dll DLL ファイルを php.ini に含めて、この拡張機能を有効にする必要があります。

libmagic ライブラリは PHP にバンドルされていますが、PHP 固有の変更が含まれています。libmagic.patch という名前の libmagic に対するパッチが維持されており、PHP fileinfo 拡張ソース内で見つかる場合があります。

続きを読む

于 2013-02-11T09:33:28.163 に答える
1

PHP8

  1. ファイルを編集してphp.iniコメントを外しextension=fileinfoます。

  2. HTTP サーバー (Apache など) を再起動します。

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

PHP7

  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.iniextension=php_fileinfo.dll

于 2019-12-26T10:40:13.517 に答える