私のPHPスクリプトで非常に奇妙な問題が発生しています。
いくつかのファイルをアップロードし、PHP でそれらすべてを 1 つのフォルダーに入れます。ランダムなファイルが送信され、ランダムなファイルが送信されないという問題があります。それでデバッグしたところ、$_FILES[] 配列から非常に奇妙な結果が得られました。
3つのファイルで試しました。
$_FILES["addFile"]["name"]
3 つのファイルの名前を保持します。
PHP がファイルをコピーするために使用する 3 つの一時的な名前を保持することを期待$_FILES["addFile"]["tmp_name"]
しますが、そうではありません。保持する名前は 1 つだけです。他の 2 つは空の文字列で、アップロード中にエラーが発生します (これは表示されません)。
これは非常に奇妙です。私は複数の状況を試しましたが、それは起こり続けています。これは、私の設定またはおそらく私のコードの何かに違いありません。
これが私のコードです:
$i = 0;
if (!empty($_FILES['addFile'])) {
foreach($_FILES['addFile'] as $addFile) {
$fileToCopy = $_FILES["addFile"]["tmp_name"][$i];
$fileName = $_FILES["addFile"]["name"][$i];
$i++;
if(!empty($fileToCopy)){
$copyTo = $baseDir."/".$fileName;
@copy($fileToCopy, $copyTo) or die("cannot copy ".$fileToCopy." to ".$copyTo);
}
}
exit(0);
}
tmp_name が空であるため、if-value は false になり、die() 関数をスキップします。
誰がこれを引き起こしているのか知っていますか?
詳細情報: Windows XP を使用しており、WAMP サーバーを実行しています。以前にこの問題が発生したことはなく、アップロードしようとしたすべてのマップにアクセスできます。Windows のセキュリティ設定が問題になることはないと思います。