ホームページ >バックエンド開発 >PHPチュートリアル >PHP でファイルをアップロードすると「未定義の変数: HTTP_POST_FILES」エラーが発生するのはなぜですか?

PHP でファイルをアップロードすると「未定義の変数: HTTP_POST_FILES」エラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-10 01:57:09342ブラウズ

Why Am I Getting the

PHP を使用したファイルのアップロード:「未定義の変数: HTTP_POST_FILES」エラーのトラブルシューティング

PHP を使用したサーバーへのファイルのアップロードは簡単なプロセスです。ただし、プロセス中に発生する可能性のあるエラーに対処することが重要です。

問題:
PHP を使用してファイルをアップロードしようとすると、エラーが発生します:「通知: 未定義の変数: HTTP_POST_FILES".

原因:
$HTTP_POST_FILES 変数は、アップロードされたファイル情報を格納するグローバル配列を参照します。ただし、PHP 4.1.0 以降は非推奨となっており、使用はお勧めできません。

解決策:
最新の PHP バージョンでは、アップロードされたファイル データにアクセスするための異なる構造が必要です。 $HTTP_POST_FILES の代わりに、次の方法を使用します:

$_FILES["file_name"]["key"]

ここで:

  • file_name は、ファイルが選択された入力フィールドの名前です。
  • key は、アクセスされるファイルの特定の側面 (例: 「名前」、「タイプ」、「サイズ」、 "tmp_name").

コード例:

次の改良された PHP コードは、ファイル アップロードのベスト プラクティスに従っています:

$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["filename"]["name"]);
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
$allowedTypes = ['jpg', 'png'];

if (isset($_POST["submit"])) {
    // Check file type
    if (!in_array($imageFileType, $allowedTypes)) {
        echo "Type is not allowed";
    }
    // Check if file already exists
    elseif (file_exists($target_file)) {
        echo "Sorry, file already exists.";
    }
    // Check file size
    elseif ($_FILES["filename"]["size"] > 5000000) {
        echo "Sorry, file is too large.";
    } else {
        // Upload file
        if (move_uploaded_file($_FILES["filename"]["tmp_name"], $target_file)) {
            echo "File uploaded successfully.";
        }
    }
}

以上がPHP でファイルをアップロードすると「未定義の変数: HTTP_POST_FILES」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。