2011-01-03 12 views
0

私が開発したプロジェクトを、Godaddyにホストしてアップロードしましたが、私の開発サーバーには表示されないZend_Validate_Form_File_Is *バリデーターで問題が発生しました。彼らは与えられたファイルのMIMEタイプを検出するのに失敗しているように見え、常に "not valid"を返します。PHPでのファイルタイプの検証に失敗しています

ie。コード

$validator = new Zend_Validate_File_IsCompressed(); 
var_dump($validator->isValid($filename)); 

は、同じファイルのためのGoDaddyのサーバー上で私の開発サーバー上のtruefalseを生成します。

GoDaddyでこれらのバリデータ(特にZend_Validate_Form_File_IsCompressedおよびZend_Validate_Form_File_IsImage)に問題が発生したことはありますか?

誰かがこれらのバリデーターを動作させる方法か、ファイルアップロードを検証する別の方法を提案できますか?

答えて

0

それは私の最初の直感だったACCを思わをターゲットにzip , tar , rarを追加することができますね$img->addValidator('Extension', false, 'jpg,jpeg,png,gif');

:に変更PHP/ZendがMIMEタイプを決定できないように、サーバ上にmime設定がありません(これは私が知る限り修正できません)。私はコマンドラインを使用することができませんので、fileコマンドを試すことはできませんが、同じ結果が得られると思われます。

私が行った解決策は、意図した目的でファイルを開こうとすることです。失敗した場合は有効ではありません。

ie。

$zip = new ZipArchive(); 
if (false !== $zip->open($filename)) { 
    // it's a valid zip 
} elseif (false !== image_create_from_string(file_get_contents($filename))) { 
    // it's a valid image 
} else { 
    // it's invalid 
} 

これはおそらく、すべてのファイル・タイプのために働くとしないことがあり、信じられないほど効率的ではありませんが、私はそれが仕事をしないと思うし、私はそれが成功した唯一の拡張子をチェックとは異なり、ファイルを検証と思います。

+0

Eek ... finfoをインストールしましたか?そうでない場合は、GoDaddyサーバーにインストールされ、有効になっていることを確認してください。 (これはおそらく最も可能性が高いと思われますが、共有ホスティングまたは管理ホスティングの場合はGDに言及することすらあるかもしれません) –

+0

finfoがこのトリックをやっていない場合に役立つ情報があります:http:// forums .zend.com/viewtopic.php?f = 8&t = 864 –

0

全く同じ質問file->getMimeType() always returns application/octet-stream with Zend Frameworkを確認してください。 PHPの使用されている拡張機能のどれも利用できない場合、有用な応答は得られません(mimemagic、fileinfo)。

+0

リンクありがとうございます。それは問題が何であるか(私が疑ったものです)を説明しますが、残念ながら解決策を提供していません。 –

+0

環境がLinuxの場合、execを実行する権利がある場合は、おそらく 'file'コマンドを呼び出すことができます。 – regilero

+0

またはtawfekovのアドバイスを使用し、拡張機能をチェックしてください。それはあまり安全ではありませんが、少なくともあなたは基本的な使い方について有用な情報を得ようとすることができます。 – regilero

0

ええ、私は同じ問題に取り組んでいましたが、別のホスティング会社では、

は、私は、PHP 5.3とisImageバリデータを使用していたし、溶液がした

それは常に開発に生産 と真にfalseを返しました。私はあなたが圧縮されたファイル

関連する問題