PHPのfile_get_contentsで日本語を含むファイル名は避けるべき!

こんにちは!ぐちです。

今回はPHPのお話を少しばかり。

file_get_contentsで取得できない?

ファイル名に日本語を含むファイルをPHPのfile_get_contents関数では取得できないそうです。実際に僕も下記のコードでAWSのS3上に格納したファイルを取得するコードを書いていたのですが日本語を含むファイル名のものだけ取得できていませんでした。しかも@マークをつけているからエラーも出ないという悲惨な状況でした。。

$img = base64_encode(@file_get_contents(“ファイルまでのフルパス"));

AWS S3の問題?

これまでに気にしていなかっただけなのか発生していなかったのか不明ですがこの現象にあったことがありませんでした。ネットでは「表示」や「表」を含む場合に取得できないという記事はありましたが僕の場合は日本語は含まれていれば無条件に取得できていませんでした。

サーバ環境の問題なのかまで調査できていませんがファイル名に日本語を含まないよう英数字のみでリネームすると問題なく取得することができました。

フォルダやファイル名に日本語ってつける?

開発者の方々はおそらく案件でもプライベートでもフォルダやファイル名に日本語ってつけないですよね?僕はプライベートでも日本語を含む名前はつけません。それどころか仕事のくせでフォルダ名に「00_XXXX」、「10_XXX」のようにシーケンス番号まで振ってしまいます。笑

周りの開発者も自然と日本語を含まないようにしているようですが若手の開発者の中には日本語名のフォルダを作っているようです。おそらくITリテラシーが高いといいますか経験則上といいますか本能的に日本語にリスクを感じているんでしょうね。

日本語って厄介

プログラム開発をしていると日本語に悩まされることが多いと思います。皆さんのきっと一度はご経験があると思います。文字コードであったり字数チェックであったり。。。

厄介ですが母国語ですし日本国内で運営するようなシステムであれば利用者が日本人であることが多いでしょうから切り捨てることはできないんですよね。。悩ましい。。。