PHP ファイルのアップロードエラー解決方法
PHP のファイルアップロード実装で、つまずきそうな部分をまとめてました。
大きなファイルがアップロードできない
php.ini の upload_max_filesize と post_max_size の値がどのようになっているか確認。あと、memory_limit は上記の2つの値より大きくなっている必要があります。php.ini が直接覗けない場合は
echo ini_get('upload_max_filesize'); echo ini_get('post_max_size'); echo ini_get('memory_limit');
のようにして確認することもできます。まあ、php.ini を編集できないと回避できないのですが。
上記の設定に問題ない場合、HTML で MAX_FILE_SIZE を指定していないか確認します。
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
HTML のフォームに MAX_FILE_SIZE を設定することが推奨されていますが、この値をセットしていることを忘れて、変更が漏れているかもしれません。
Apache 側の設定の可能性もあります。httpd.conf や /etc/httpd/conf.d/php.conf などで、LimitRequestBody の値を制限しているかどうか確認してください。
そもそもアップロードできない
大きいファイルだけでなく小さいファイルもアップロードできない場合は、php.ini で file_uploads が Off になっているかもしれません。
また、form 要素の enctype 属性が multipart/form-data に設定されていない可能性があります。
<form method="post" enctype="multipart/form-data">
それ以外では、サーバのテンポラリディレクトリが存在しなかったり、apache を実行しているユーザで書き込みできなくなっている可能性があります。php.ini の upload_tmp_dir に設定されているディレクトリが有効かどうか確認してください。
突然アップロードできなくなった
サーバのディスク容量が不足しているかもしれません。
エラーコードを調べる
PHP の変数 $_FILE[“input_name“][“error”] にエラーコードが格納されています。エラーコードの説明 を参照すると、より原因が絞り込めます。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.