2

Zend FRを1.11にアップデートした後、問題が発生しました

Mimetypeファイルチェックは以下を生成します:

警告:文字列拡張子`B'は無効です

Zend_Validate_File_MimeTypeの文字列に問題があるようです

$finfo = finfo_open(FILEINFO_MIME_TYPE, $file);

簡単なテストケースを作成しました

$finfo = finfo_open(FILEINFO_MIME_TYPE, '/usr/share/misc/magic');
echo finfo_file($finfo, PUBLIC_HTML_PATH . '/images/missing.png');
finfo_close($finfo);

そして、私は同じエラーが発生しました:(

finfo_open(FILEINFO_MIME_TYPE, '/usr/share/misc/magic'); //generates: Warning: string extension `B' invalid.

私のOS:Kbuntu 10.10

私はどこが間違っていますか?

4

4 に答える 4

2

Mike Purcellと同じエラーメッセージ(「警告:コマンドで文字列拡張w'が無効です」)が表示されましたが、修正方法が異なりました。

私たちのサーバーには、/usr/share/misc/magic/usr/share/misc/magic.mgcファイルがありました。ファイルはmagic.mgcファイルからコンパイルされていましたmagicが、PHPはファイルと直接通信することに満足していませんでした(ファイルの更新が必要な/usr/share/misc/magicデバッグの一環として、そのファイルに移行しました)。magic.mgc

私たちの修正は、putenv行をmagic.mgcファイルに戻すことでした:

putenv('MAGIC=/usr/share/misc/magic.mgc');

その後、magic-ally :-)、mimeタイプの検出システム全体が再び機能し始めました。

于 2013-03-01T00:49:00.970 に答える
1

これはあなたの正確な問題に関係しないかもしれませんが、私が抱えていた問題を解決し、非常によく似たエラーメッセージが表示されました: "警告: コマンドで文字列拡張子が無効です".

私たちの場合、一部のサーバーがまだ php 5.2 を実行しており、他のサーバーが php 5.3 を実行している異機種環境のセットアップがあります。5.2 ボックスでは、マジック ファイルは にあります/usr/share/file/magicが、5.3 ボックスでは、ファイルはデフォルト パスの にあり/usr/share/misc/magicます。どうやら、誰かが 5.2 パスをシンボリックリンクすることでこれらのパスの違いを調整しようとしたため、コードベースは PHP のバージョンに依存しません。しかし、マジック ファイルへのシンボリック リンクに関して PHP サイトに投稿されたいくつかのコメントによると、予期しない動作が発生し、もちろん前述のエラー メッセージが表示されます。

そのため、渡すパスがシンボリック リンクではなく実際のマジック ファイルへのパスであることを確認し、問題が解決するかどうかを確認してください。

于 2012-09-18T22:37:08.983 に答える
1

PHP のバージョンによっては、マジック フォーマットが更新される場合があります。これは、http://php.net/manual/en/function.finfo-open.phpのメモに記載されています。

php -v を実行してバージョンを確認します

ソース ツリーで古いマジック ファイルを指定すると同じエラーが発生し、現在の Linux ディストリビューションから新しいマジック ファイルを指定すると解決しました。

于 2012-12-18T20:07:48.403 に答える
0

Laravelでこのエラーが発生しました(もちろん、Zend FRを除く)。IIS を搭載した Windows ボックスで PHP 5.3.21 を実行しています。

オンラインでほとんど情報を見つけることができず、あきらめかけていました。PHP.netのコメントの指示に従ったとき、最初は機能しました。これは、基本的にfileinfo.dllをPHPインストールに追加し、関連するマジックファイルをダウンロードして環境変数をそれらにポイントすることでした。

実際には php_fileinfo.dll がないことに気付くまで、最初は混乱がありました。そのため、それを php.ini ファイルに追加するだけでなく、ファイル自体をダウンロードしてextディレクトリに追加する必要がありました。

今、私が本当に立ち往生していたのは、最初はうまくいったということでした。次の日はそうではありませんでした。簡単に言うと、環境変数 MAGIC は必要ありませんでした。これが私を行き詰まらせた理由は、考えられるすべてのシナリオを試したからですが、環境変数が設定されると、それが設定されました。また、Windowsサーバーを削除した後、設定を解除するためにWindowsサーバーを再起動する必要がありました。これを行うと、完全に機能しました。

于 2014-05-09T15:10:45.950 に答える