【PHP】file_put_contents関数で保存した画像が壊れる原因
file_get_contents関数で任意の画像のファイルデータを取得し、そのデータをfile_put_contents関数に渡してサーバー内に画像を保存するプログラムを実行したのですが、保存した画像をブラウザで確認したところ
画像ファイル"http://~~~"は壊れているため、表示できませんでした
というエラーが出て困ってしまいました。
ここでは「なぜ画像が壊れるのか?」に対処した流れを書いておきたいと思います。
Java、PHP、javascriptなどのプログラミング&Wordpress、HTML、CSSなどのWeb情報ブログ(最近は雑記や仮想通貨のことなど幅広く)
file_get_contents関数で任意の画像のファイルデータを取得し、そのデータをfile_put_contents関数に渡してサーバー内に画像を保存するプログラムを実行したのですが、保存した画像をブラウザで確認したところ
画像ファイル"http://~~~"は壊れているため、表示できませんでした
というエラーが出て困ってしまいました。
ここでは「なぜ画像が壊れるのか?」に対処した流れを書いておきたいと思います。
strpos(stripos)関数で日本語(マルチバイト)を扱う時の注意点とまとめています。
先ほどこれまで放置していたサーバーのPHPバージョンを5.2から5.4に変更したところ、これまで問題なく動いていたプログラムで
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
というエラーが出ました。
今回この対処を行ったのでメモしておきます。
文字列の中にある半角空白と全角空白をPHPの関数を使ってすべて削除・除去する方法を説明しています。
「preg_replace」関数と「str_replace」関数を使えばすぐに実装できます。
続きを読むPHPでディレクトリ(フォルダ)の存在を確認し、なければ任意のディレクトリを作成する方法を説明しています。