2012-01-01 21 views
0

私はCakePHP 2.0.4、PHP 5.3.1、Apache 2.2.14を使用しています。CakePHP名前に特殊文字を含む画像が表示されない

たとえば、ファイル名はF#7m7〜1.gifです。本当に存在し、パスとファイル名は正しいです。

は、印刷HTMLタグの前に、私は()でurlencodeを使用して、それをエンコードし、タグは次のようになります:

<img src="/chord/img/chords/F%2523m7~1.gif" alt="F#m7"> 

しかし、イメージがロードされていません。

私はまたブラウザに直接ロードしようとしましたが、http://myapp.localhost/chord/img/chords/F%2523m7~1.gifでも、私には "Missing Controller Error:Chord.ImgControllerが見つかりませんでした"というメッセージが表示されます。

すべてが〜1.gifとしてファイルで正常に動作しますが、それは〜1.gif、Bは、(7)〜1.gifなど

Everthingは、[OK]を働いていたなどのF#mとしてファイル名でbrokes純粋なPHPコードバージョンです。今、CakePHPでは動作しません。

誰かが手がかりを持っていますか?

+0

最も簡単な解決策は、異常な文字を含むファイル名を許可しないことです。 [a-zA-Z0-9 \ ._-]に固執してください。 – GordonM

+0

GordonM、私はあなたが正しいと信じています。しかし、それは純粋なPHPバージョンで働いていたので、私はそれがCakePHPでも動作することが可能であることを認識しました。 ところで、画像ファイル名が自動的に生成され、その後、エンジンをリファクタリングしてこのように生成することができます。しかし、私は本当になぜうまくいかないのかを知りたい。私が途中であきらめると、私はあなたに知らせるでしょう! hehe – colares

+0

お返事ありがとう、皆さん。私は今度はフレンドリーなイメージ(そのスクリプト)の名前をやり直すことにしました。記録のために、私はこの問題についてこの素晴らしいリンクを見つけました:http://playground.zaplabs.com/sandbox/qa/stackexchange/serverfault/295664/。しかし、私はそれが私の状況にとって必要不可欠なオーバーヘッドだと私は信じています。 – colares

答えて

0

F#7m7~1.gifの正しいurlencodeは、F%2523m7~1.gifではなく、F%237m7~1.gifです。そのうちの1つを削除してください。

Missing Controllerエラーはサーバー上にこのようなファイルがないためで、CakeはChordプラグイン内でImgControllerを呼び出そうとしていると思います。試してくださいhttp://myapp.localhost/chord/img/chords/F%237m7~1.gif、それは動作するはずです。

とにかく@GordonMが指摘したように、ファイル名には通常の文字を使用することをお勧めします。

+0

こんにちは!返信ありがとう!いい視点ね!しかし、私は1つのエンコード、エンコードなしのイベントでも試しましたが、それでも動作しませんでした。 – colares

+0

ブラウザにこのhttp://myapp.localhost/chord/img/chords/F%237m7~1.gifをロードすると動作しないと言っていますか? – luchomolina

+0

はい、動作しません。ああ、例はF#m7〜1.gifです 私はhttp://myapp.localhost/chord/img/chords/F%23m7~1.gifを試しました – colares

関連する問題