PHP ファイルのアップロードエラー解決方法

2008-8-23 07:00
このエントリーをはてなブックマークに追加

PHP のファイルアップロード実装で、つまずきそうな部分をまとめてました。

大きなファイルがアップロードできない

php.ini の upload_max_filesizepost_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”] にエラーコードが格納されています。エラーコードの説明 を参照すると、より原因が絞り込めます。

  • ブックマーク : アクセス: 84,094回
  • カテゴリー : その他
  • キーワード : ,

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

32 queries. HTML convert time: 0.076 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン