0

私は基本的にこのhtmlのページを持っています:

<form method="post" enctype="multipart/form-data"  action="photo_test.php">

<input class="fupload" name="uploadedfile[1]" type="file" />
<input class="fupload" name="uploadedfile[2]" type="file" />
<input class="fupload" name="uploadedfile[3]" type="file" />
<input class="fupload" name="uploadedfile[4]" type="file" />
<input class="fupload" name="uploadedfile[5]" type="file" />
<input class="fupload" name="uploadedfile[6]" type="file" />


<input type=submit>

ファイルを処理するためのいくつかのphp。数枚 (通常は 5 枚未満) の写真がアップロードされている場合は、問題なく動作します

5 または 6 をアップロードすると、ファイルをアップロードしたことさえ登録されないようです。私はこれをコードの上に追加してテストしました(これは何が悪いのかを解決するために削除されたテストページにあります)。

数枚の写真をアップロードすると正常に動作します (つまり、print_r($_FILES) でファイルの詳細が表示されます。そのうちの 5 または 6 枚をアップロードすると、空の配列が出力されます (何もアップロードしない場合と同じです)。

何か案は?

(これは完全なスクリプトです。1 つまたは 2 つの画像をアップロードすると、print_r($_FILES) にデータが表示されます。5 つ以上 (ish) をアップロードすると、データは表示されません。各写真は約 2-3 MB です)

<?


  ini_set('max_upload_filesize', 8388608);
 ini_set('upload_max_filesize', 8388608); 
 ini_set('memory_limit', '125M');
echo "<pre>";
print_r($_FILES);
print_r($_POST);

?> 


<form method="post" enctype="multipart/form-data"  action="photo_test.php">

<input class="fupload" name="uploaded[1]" type="file" />
<input class="fupload" name="uploaded[2]" type="file" />
<input class="fupload" name="uploaded[3]" type="file" />
<input class="fupload" name="uploaded[4]" type="file" />
<input class="fupload" name="uploaded[5]" type="file" />
<input class="fupload" name="uploaded[6]" type="file" />


<input type=submit>
</form>

結果:

ファイルを 1 つだけアップロードする場合

Array
(
    [uploadedfile] => Array
        (
            [name] => Array
                (
                    [1] => DSCN0426.JPG
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [type] => Array
                (
                    [1] => image/jpeg
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [tmp_name] => Array
                (
                    [1] => /tmp/phpNM967F
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [error] => Array
                (
                    [1] => 0
                    [2] => 4
                    [3] => 4
                    [4] => 4
                    [5] => 4
                    [6] => 4
                )

            [size] => Array
                (
                    [1] => 2824091
                    [2] => 0
                    [3] => 0
                    [4] => 0
                    [5] => 0
                    [6] => 0
                )

        )

)
Array
(
)

複数のファイル (5 または 6) をアップロードする場合

Array
(
)

Array
(
)
4

4 に答える 4

1

PHP は、スクリプトを実行する前に実際のアップロードを処理します (そして、$_FILES グローバル配列にファイルのサイズと tmp パスを入力します)。そのため、スクリプトでの ini_get() または set_time_limit() 呼び出しは役に立ちません。

php.ini でこれを修正する必要があります。共有ボックスを使用している場合は、ISP に問い合わせる必要があります。

また、「post_max_size」の値も忘れずに増やしてください http://www.php.net/manual/en/ini.core.php#ini.post-max-size

于 2011-03-01T21:41:03.053 に答える
1

このエラーは、アップロード ファイルのサイズがpost_max_sizeを超えると発生します。2 つの大きなファイルをアップロードするときに同じ問題が発生します。この値を変更すると、うまく機能します。また、 upload_max_filesize の値を変更する必要があるかもしれません。

localhost で作業している場合は、php.ini を簡単に変更できます。ただし、サーバーを Cpanel として変更する場合は、このhttp://www.webhostingzone.org/change-php-settings.htmlに従ってください。

于 2012-03-16T05:31:56.557 に答える
0

あなたの php.ini の post_max_size は? この値も調整する必要があります (デフォルトでは 8MB)。そのため、$_POST 配列は空です。

編集: upload_max_filesize と post_max_size は、変更可能な状態が PHP_INI_PERDIR に設定されているため、ini_set を使用して変更できません ( http://be2.php.net/manual/en/ini.list.phpを参照)。PHP_INI_USER である必要があります。

したがって、明らかにデフォルト値 (おそらく 2M と 8M) に固執するため、空の $_FILES になります。

これらのオプションは、サーバー構成 (php.ini または apache conf) または .htaccess ファイルを使用して変更する必要があります。http://php.net/manual/en/configuration.changes.phpを参照してください

于 2011-03-01T21:47:57.813 に答える
-1

スクリプトがタイムアウトしている可能性があります。6 つの非常に小さいファイルをアップロードしてみるか、調べてください。set_time_limit()

于 2011-03-01T21:23:53.740 に答える