前提・実現したいこと
httpとPHPでファイルアップロードフォームを作成し、サーバに画像をアップロードして表示します。
発生している問題・エラーメッセージ
アップロード先のURLをchrome, safariに直打ちし、jpeg, jpg画像を表示させたとき、
約1KBの小さい画像は表示できましたが、約1.3MBの大きい画像は以下のようになり、正しく表示されません。
pngだと、サイズが大きい画像でも問題なく表示できました。
該当のソースコード
html
1<form method="POST" action="" enctype="multipart/form-data"> 2 <input type="file" name="GAZOU1" accept="image/*"> 3 <input type="submit" value="アップロード"> 4</form>
PHP
1if (is_uploaded_file($_FILES['GAZOU1']['tmp_name'])) { 2 $new_name_GAZOU1 = 'images/GAZOU1.' . pathinfo($_FILES['GAZOU1']['name'], PATHINFO_EXTENSION); 3 if (!move_uploaded_file($_FILES['GAZOU1']['tmp_name'] , $new_name_GAZOU1)) { 4 //エラー処理 5 } 6}
Not Foundになっていないことからも分かる通り、想定したディレクトリにアップはされていますが、表示だけができない状態です。
また、アップされた画像のサイズは、アップした画像のファイルサイズと同じになっているので、空のファイルがアップされているわけではないようです。
php.iniで設定されている、関係ありそうな定数は以下のように設定してあります。
post_max_size: 8M
upload_max_filesize: 32M
###実行環境
開発で使用しているローカル環境と、本番環境であるレンタルサーバーでの環境があり、どちらでもほとんど同じ症状が出ています。
ローカル:
MAMPを使用
Server API : Apache 2.0 Handler
Apache Version : Apache/2.4.46 (Unix) OpenSSL/1.0.2u PHP/7.4.16 mod_wsgi/3.5 Python/2.7.13 mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_perl/2.0.11 Perl/v5.30.1
Hostname:Port : localhost:8888
HTTP_HOST : localhost:8888
PHP Version : 7.4.16
レンタルサーバー:
さくらのレンタルサーバー スタンダードプラン
Server API : Apache 2.0 Handler
Apache Version : Apache
PHP Version : 7.4.25
アップロード先のディレクトリの権限は、rw-r--r--にしてあります。
ローカル環境だと、(Macなので)Finderでアップロード先のパスを入力した場合、大きい画像でも問題なく表示されます。ただし、ブラウザにアップロード先のパスを入力した場合は、上記と同じ症状が出ます。
レンタルサーバー上の環境だと、レンタルサーバーで利用できるファイルシステムでアップロードした画像をプレビューしようとしても、正しく表示されず、上記の症状が出ます(このファイルシステムは、ブラウザ上で動作するためと推測しています)。