ファイルをアップロードできないため、失敗が返されます。調査の結果、PHP の is_uploaded_file 関数が問題を引き起こしていることが判明しました。以下に、同じような状況に陥った友人の参考にしてください。
原因:詳細分析:
今回発生した問題は、C:/WINDOWS/Temp/php99.tmp であるはずの tmp_name が C://WINDOWS //Temp//php99.tmp に変更され、is_uploaded_file 関数がエラー情報を返すことです。
$file['tmp_name'] = str_replace('////', '//', $file['tmp_name']);
実際の文字列「////」は 2 つの / であり、他の 2 つはエスケープを表すために使用されることに注意してください。
; 受信 GET/POST/Cookie データのマジック引用符。
magic_quotes_gpc = オン
PHP のデフォルト設定では、magic_quotes_gpc はオンになっており、magic_quotes_gpc パラメーターがオンになっている PHP 環境では、GET/POST /Cookie にラッシュ効果を自動的に追加します。 addslashes は $_FILES に追加されないことに注意してください。
magic_quotes_gpc が Off の場合、addslashes 関数が $_FILES 配列に追加されるため、問題が発生します。この問題は、magic_quotes_gpc がオフになっている PHP 環境でも発生します。
is_uploaded_file 関数の分析:
bool is_uploaded_file ( string $filename )
filename で指定されたファイルが HTTP POST 経由でアップロードされた場合は TRUE を返します。これを使用すると、悪意のあるユーザーがスクリプトをだまして、/etc/passwd などの本来アクセスできないファイルにアクセスできないようにすることができます。 このチェックは、アップロードされたファイルによってそのコンテンツがシステムのユーザーまたは他のユーザーに表示される可能性がある場合に特に重要です。