<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.file-upload.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'features.file-upload.common-pitfalls.php',
    1 => '陥りやすい落とし穴',
    2 => '陥りやすい落とし穴',
  ),
  'up' => 
  array (
    0 => 'features.file-upload.php',
    1 => 'ファイルアップロードの処理',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.errors.php',
    1 => 'エラーメッセージの説明',
  ),
  'next' => 
  array (
    0 => 'features.file-upload.multiple.php',
    1 => '複数ファイルのアップロード',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'features/file-upload.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.file-upload.common-pitfalls" class="sect1">
   <h2 class="title">陥りやすい落とし穴</h2>
   <p class="simpara">
    <code class="literal">MAX_FILE_SIZE</code> の値に、<var class="filename">php.ini</var> の <a href="ini.core.php#ini.upload-max-filesize" class="link">upload_max_filesize</a>
    で指定されたファイルサイズより大きなファイルサイズを指定する
    ことはできません。デフォルトは、2 メガバイトです。
   </p>
   <p class="simpara">
    メモリ制限が有効な場合、<a href="ini.core.php#ini.memory-limit" class="link">memory_limit</a> の値をより大きく
    設定することが必要となる可能性があります。
    <a href="ini.core.php#ini.memory-limit" class="link">memory_limit</a> に充分大きな
    値を設定するようにしてください。
   </p>
   <p class="simpara">
    <a href="info.configuration.php#ini.max-execution-time" class="link">max_execution_time</a>
    に設定した値が小さすぎた場合、スクリプトの実行時間がこの値を越える
    可能性を生じます。
    <code class="literal">max_execution_time</code> に充分大きな値を設定するように
    してください。
   </p>
   <blockquote class="note"><p><strong class="note">注意</strong>: 
    <span class="simpara">
     <a href="info.configuration.php#ini.max-execution-time" class="link">max_execution_time</a>
     はスクリプト自身の実行時間にのみ影響します。
     スクリプトの実行範囲の外側で発生する動作にかかる時間、つまり、
     <span class="function"><a href="function.system.php" class="function">system()</a></span> を使ったシステムコールや、
     <span class="function"><a href="function.sleep.php" class="function">sleep()</a></span> 関数、データベースに対するクエリー、
     ファイルアップロードプロセス、などに費やされた時間はスクリプトの
     総実行時間に含まれません。
    </span>
   </p></blockquote>
   <div class="warning"><strong class="warning">警告</strong>
    <p class="simpara">
     <a href="info.configuration.php#ini.max-input-time" class="link">max_input_time</a>
     は、スクリプトで入力を受け付けることができる最大秒数を設定します。
     この秒数には、ファイルアップロードの時間も含まれます。
     大きなファイルや複数のファイルをアップロードしたり接続に時間を要したりする場合は、
     デフォルト値の <code class="literal">60</code> 秒を増やしましょう。
    </p>
   </div>
   <p class="simpara">
    <a href="ini.core.php#ini.post-max-size" class="link">post_max_size</a> の設定値が
    小さすぎた場合、大きなファイルをアップロードすることができなくなります。
    <code class="literal">post_max_size</code> に充分大きな値を設定するように
    してください。
   </p>
   <p class="simpara">
    <a href="ini.core.php#ini.max-file-uploads" class="link">max_file_uploads</a>
    は一回のリクエストあたりでアップロードできるファイルの数の制限値となります。
    この制限を超える数のファイルをアップロードしようとすると、制限に達した時点で
    <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var> は処理を停止します。たとえば
    <a href="ini.core.php#ini.max-file-uploads" class="link">max_file_uploads</a> が
    <code class="literal">10</code> の場合には、<var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var>
    には 10 件までの要素しか入らないということです。
   </p>
   <p class="simpara">
    処理するファイルを検証しない場合、ユーザーが他のディレクトリにある
    非公開情報にアクセスできる可能性を生じます。
   </p>
   <p class="simpara">
    大量のディレクトリ一覧のスタイルのせいで、
    風変わりな名前（空白を含んでいるとか）のファイルを適切に扱えることは
    保証できません。
   </p>
   <p class="simpara">
    通常の <code class="literal">input</code> フィールドとファイルアップロードフィールドを
    (<code class="literal">input</code> の name に <code class="literal">foo[]</code> を利用するなどして)
    同一のフォーム変数で扱うことはできません。
   </p>
  </div><?php manual_footer($setup); ?>