CakePHP Ver1.3.6で開発をしています。

アクションの中で、画像の存在判定にfile_exists関数を使ったのですが、
2バイトのファイル名のファイルの場合、存在するファイルがfalseになって
しまいます。

対象のファイルが存在するときに、

if (file_exists('img/漢字.jpg')) echo 'あります';
else echo 'ありません';

if (file_exists('img/filename.jpg')) echo 'あります';
else echo 'ありません';

このとき、前者は’ありません’、後者は’あります’と表示されます。

app/webrootフォルダにtest.phpを作り、その中で同じ判定をすると、
両方とも’あります’と表示されます。

なぜアクションの中に記述したときのみ、2バイトファイル名を正しく
判定できないのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

文字コードは統一できていますか?



・システム側で、ファイルシステムに使われている文字コード
・PHPファイル中でファイル名の指定に使っている文字コード

この二つが一致していないと、一見同じに見えても文字コードのバイト列レベルでは別の文字列になり、「ありません」と判定されることになります。

おそらく、たまたまtest.phpの方はファイルシステムと同じ文字コードで記述されているだけなのではないかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。おっしゃる通りでした。実に基本的なところを見落としていて、恥ずかしいです。

いついもLinux上での開発をしていたところ、今回WindowsのXAMPPでの開発に移ったことが原因のようです。

ありがとうございました。

お礼日時:2011/04/08 17:09

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング