web-dev-qa-db-ja.com

Windowsでphp_fileinfo.dllとfinfo_openを使用するPHP 5.3.5

PHP 5.3.5&PHP 6を使用してWindowsServer 2003で実行されているIISスクリプトでfinfo_openを呼び出すのに問題があります。呼び出しは常に致命的なエラーを返します:未定義の関数finfo_open( )で.。

少し読んだだけで、fileinfo機能がWindows PHPのインストールにデフォルトで含まれていないことがわかりましたが、何も試していません。ここのコメント#3の指示: http://www.php.net/manual/en/fileinfo.installation.php 役に立たなかった、そしてそれは私が見つけることができる最も公式に見える説明です。 Web上にmime_magicdllの必要性に関する情報はたくさんありますが、5.3以降は必要なくなったようです。さらに、 http://pecl.php.net/package/Fileinfo で、「PHP 5.3.0以降、この拡張機能はデフォルトで有効になっています」と読みました。どうしたの?

この問題はテストサーバーにあります。私のローカルマシンにはxamppとPHP 5.3.1があり、呼び出しは正常に機能するので、テスト時にphp_fileinfo.dllをローカルからphp\extにコピーしようとしましたが、これでも違いはありませんでした(Iバージョンが異なることは知っていますが、5.3が重要なビットであることを読みました)。

これに関するアドバイスをいただければ幸いです。

    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime = finfo_file($finfo, $filepath);
12
tomfumb

あなたはすでにそれを成し遂げるのに近づいています、あなたの側でいくつかの小さな構成だけが欠けています。

fileinfoの使用法とインストール手順 を参照してください:

Windowsユーザーは、この拡張機能を有効にするには、バンドルされているphp_fileinfo.dll DLLファイルをphp.iniに含める必要があります。

そのDLLファイルはPHP 5.3.6にバンドルされています。たとえば、ファイルは次の場所にあります。 PHP ForWindows-バイナリとソースリリース 。これは、PHPインストールのextサブディレクトリにすでにあるはずです。そうでない場合は、上記のWebサイトから再度ダウンロードしてください(PHP version)そしてそれを拡張ディレクトリに置きます。

php.iniに次の行を追加してから、アクティブ化する必要があります。

extension=php_fileinfo.dll

これは、WindowsでPHP拡張機能をアクティブ化するための標準的な手順です。PHP拡張機能をアクティブ化する方法の詳細については、こちらをご覧ください: のインストールWindowsでの拡張機能 。php.iniファイルを見つけるのに問題がある場合は、 PHPのインストール手順-Windowsシステムでのインストール を参照してください。

20
hakre

この行

extension=php_fileinfo.dll 

php.iniでコメントされたので、コメントを外して、xamppサーバーを再起動しました。

4
Rodolfo Velasco

Hakreが提案したことを実行した後、FileInfo拡張機能はまだロードされていませんでしたが、最終的に、変更しているphp.iniファイルが間違っている(\ MAMP\bin\phpにある)ことを確認して解決しました。\php7.2.10)一方、正しいものは\ MAMP\conf\php7.2.10にありました。正しいiniファイルで有効にした後、phpサーバーを再起動する必要があり、それをオフにすると機能しました。

注:パスの先頭から「\ MAMP」を、Webサーバーソリューションスタックソフトウェア(MAMP、WAMP、XAMPなど)がインストールされているパスに置き換える必要がある場合があります。 MAMPを使用していたので、ファイルパスにMAMPが存在するのはそのためです。

0
Umar T.