2011-12-17 3 views
0

ここでは奇妙な動作があります。現在のupload_max_filesize2Mです。 PHPのインストールに何か問題がありますか?複数のファイルをアップロードすると、PHPの動作が奇妙に変わってしまいます。

<?php if(isset($_FILES['images'])) var_dump($_FILES['images']); ?> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 
    </head> 
    <body> 
     <form method="post" action="processupload.php" 
      enctype="multipart/form-data"> 
      <input id="images[]" name="images[]" type="file" multiple="" /> 
      <input name="submit" type="submit" value="Upload" /> 
     </form> 
    </body> 
</html> 

テスト異なる挙動を示しています

  • ビッグサイズ(12M)mp3ファイル:$_FILES['images']がsettedされていない
  • ミディアムサイズ(4M)mp3ファイル:$_FILES['images']を存在しますが、$_FILES['images']['type']は空です$_FILES['images']['size']は空です

EDITは:自分自身を見つけたが、私はまだ自分の質問に答えることができません:12Mファイル$_FILES['images']の場合

  • が空でポストデータ(の大きさ)の合計がpost_max_sizeのより大きいであるため、アップロードサイズがupload_max_filesizeでより大きいので(details here)4Mファイルtypeの場合
  • sizeは空で

答えて

0

複数のアップロードファイルを持つとき、あなたはあなただけ

print_r($_FILES); 

の出力を調べることができますし、今の配列がどのように意志インデックス0..MaxUploadFiles

$_FILES[<current_index_for_file>]['images']['error'] 
+0

'$ _FILES [0] ['images']'は複数のファイルが選択されていても空です。 – Polmonino

+0

$ _FILES ['images'] [] ['error']? – djot

+0

申し訳ありませんが、['エラー']について忘れて、正しく設定されています、私の悪いですが、タイプとサイズに関する奇妙な動作が残っています。 – Polmonino

0

と、現在の1にアクセスする必要があります構造化された。私はよく覚えている場合 、あなたが値にアクセスすることができます

$_FILES['images']['size'][<index>] 
$_FILES['images']['type'][<index>] 
$_FILES['images']... 
+0

自分で見つけた解決策、とにかくありがとう。 – Polmonino

0

あなたは、php.iniのあなたのグローバル設定が限られているので、あなたがラインの下に使用して、プログラムによってそれを変更することができ、あなたのコードの先頭にこれらの行を置くことができます

ini_set('post_max_size', '25M'); 
ini_set('upload_max_filesize', '20M'); 

あなたはPOST件のデータのサイズを大きくしながら、あなたも他のスクリプトの実行時間を増やす必要があり、それは致命的なエラーがスローされます、あなたは

ini_set('max_execution_time', 0); 
により、スクリプトの実行時間を増やすことができます

ここでは無制限であると言いましたが、セキュリティのためにサーバーでテストして数秒で制限する必要があります。

+0

完全に間違っています。スクリプトはデータのアップロード後に実行されます。このため、max_execution_timeは役に立たない。 post_max_size/upload_max_filesizeは、データが既にアップロードされているため変更できません。 Btw正しいanwserが私の最初の投稿にあります。 – Polmonino

+0

@Polmoninoこのコードは、両方のページ(フォームページとアクションページ)に共通のものとして使用できます。何かを分析する前に完全に間違って言ってはいけない。クールなバディ.. –

+0

もう一度、あなたは間違っています。 'post_max_size'と' upload_max_filesize'はPHP_INI_PERDIRなのでどこに置いても問題ありません(スクリプトでは変更できないことを意味します)。そして、アップロードが完了した後にのみスクリプトが実行されるので、 'max_execution_time'は役に立たない! – Polmonino

関連する問題