Ошибка PHP – загрузка файла

Я пытаюсь написать PHP, чтобы загрузить файл в папку на моем веб-сервере. Вот что я имею:

<?php if ( !empty($_FILES['file']['tmp_name']) ) { move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']); header('Location: http://www.mywebsite.com/dump/'); exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <title>Dump Upload</title> </head> <body> <h1>Upload a File</h1> <form action="upload.php" enctype="multipart/form-data" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" /> Select the File:<br /><input type="file" name="file" /><br /> <input type="submit" value="Upload" /> </form> </body> </html> 

Я получаю эти ошибки:

Предупреждение: move_uploaded_file (./ test.txt) [function.move-uploaded-file]: не удалось открыть поток: разрешение отклонено в E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php в строке 3

Предупреждение: move_uploaded_file () [function.move-uploaded-file]: Невозможно переместить 'C: \ WINDOWS \ Temp \ phpA30E.tmp' в './test.txt' в E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php в строке 3

Предупреждение: не удается изменить информацию заголовка – уже отправленные заголовки (вывод начался с E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php: 3) в E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php в строке 4

Версия PHP 4.4.7 Запуск IIS в окне Windows. Этот конкретный файл / папка имеет 777 разрешений.

Есть идеи?

Поскольку это Windows, нет реальных 777. Если вы используете chmod , проверьте комментарии, связанные с Windows.

Убедитесь, что учетная запись IIS может получать доступ (чтение, запись и изменение) этих двух папок:

 E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\ C:\WINDOWS\Temp\ 

О, мой бог

 move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']); 

Не делай этого. $_FILES['file']['name'] может быть ../../../../boot.ini или любое количество плохих вещей. Вы не должны доверять этому имени. Вы должны переименовать файл в другое место и связать исходное имя со своим случайным именем. При минимальном использовании используйте basename($_FILES['file']['name']) .

Попробуйте добавить путь. Для меня работает следующий код:

 <?php if ( !empty($_FILES['file']) ) { $from = $_FILES['file']['tmp_name']; $to = dirname(__FILE__).'/'.$_FILES['file']['name']; if( move_uploaded_file($from, $to) ){ echo 'Success'; } else { echo 'Failure'; } header('Location: http://www.mywebsite.com/dump/'); exit; } ?> 

Предупреждение: move_uploaded_file () [function.move-uploaded-file]: Не удалось переместить 'C: \ WINDOWS \ Temp \ phpA30E.tmp' в './people.xml' в E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php в строке 3

это важная строка, в которой говорится, что вы не можете поместить файл туда, где хотите, и это обычно означает проблему с разрешениями

проверьте процесс запуска приложения (как правило, процесс webservers для php) имеет права на запись там файла.

РЕДАКТИРОВАТЬ:

повесить на немного Я прыгнул пистолет немного путь к файлу в первой строке правильно?

Другое, что нужно наблюдать, это ваш разделитель каталогов, вы используете / в окне Windows.

Добавьте пользователя IIS в группу «persmissions security» папок «дамп» и дайте ему доступ для чтения / записи.

Создайте папку с именем «образ» с разрешением 777

 <?php move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']); ?>