【PHP】スマートフォンでファイルがアップロードできない場合の対策


PHPを使ったフォームでファイルをアップロードした際にDBやログなどにアップロードされたはずのimage.jpgやA7AC099-42AC-4AE5-B166-CC6B536548B0.jpeg というようなファイル名が記録されているのに、ファイルの実体がアップロードされていないということがあります。
そのような場合にチェックすべき点と対策方法をまとめてみました。

MAX_FILE_SIZEのvalueのチェック

inputタグでMAX_FILE_SIZEを指定している場合はvalueの値が正しいかをチェックしましょう。

 <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />

この例では1MB ≒ 1000000B です。

upload_max_filesizeのチェック

まず、PHPでアップロードできるファイルサイズの設定がどうなっているかを調べます。
適当なphpファイルを作って下のスクリプトを記述します。PHPの設定情報が確認できます。

<?php phpinfo(); ?>

でupload_max_filesizeの値をチェックします。10Mなら1ファイル10MBまでアップロードできるということです。
.htaccessまたはhttpd.confで指定する場合は

php_value upload_max_filesize "10M"

を記述します。

max_execution_timeのチェック

上のphpinfo()で表示された情報でmax_execution_timeの値をチェックします。30なら30秒がスクリプトの最大実行時間となります。
ファイルアップロードに時間がかかっていてファイルがアップロードできていない場合があるので、アップロードするPHPスクリプトの行頭に

set_time_limit(60);//60秒に設定

を追記して実行時間を長くしてアップロードを試してみましょう。

$_FILESでファイルサイズをチェック

$_FILESについてはリファレンスを参照してください。

echo $_FILES['upfile']['size'];//アップロードしたファイルのサイズを表示

などをスクリプトに書き込んで送信されたファイルサイズが正しいものかを確認してみましょう。正しく送信されていれば何らかファイルのバイト数を示す整数が表示されます。うまくいかない場合は0などの値が表示されるはずです。

atnr.net の RSS登録はこちらから

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です