PHP Error - Загрузка файла

голоса
12

Я пытаюсь написать некоторые 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 загруженным-файл]: не удалось открыть поток: Разрешение отказано в E: \ Inetpub \ виртуальных доменов \ mywebsite.com \ httpdocs \ свалка \ upload.php в строке 3

Внимание: move_uploaded_file () [function.move загруженным-файл]: Не удалось переместить 'C: \ WINDOWS \ Temp \ phpA30E.tmp' до './test.txt' в E: \ Inetpub \ виртуальных доменов \ mywebsite.com \ httpdocs \ свалка \ upload.php в строке 3

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

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

Есть идеи?

Задан 06/08/2008 в 17:13
источник пользователем
На других языках...                            


7 ответов

голоса
16

О, мой бог

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

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

Ответил 13/12/2008 d 18:17
источник пользователем

голоса
7

Как это Windows, нет никакого реального 777. Если вы используете CHMOD , проверьте Windows , соответствующие комментарии.

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

E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
C:\WINDOWS\Temp\
Ответил 06/08/2008 d 17:16
источник пользователем

голоса
3

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

<?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;
}
?>
Ответил 07/08/2008 d 13:06
источник пользователем

голоса
1

Добавь пользователь IIS в группах безопасности persmissions сбрасывающих папок, и дать ему доступ на чтение / записи.

Ответил 03/12/2009 d 05:12
источник пользователем

голоса
1

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

Ответил 12/02/2009 d 18:14
источник пользователем

голоса
1

Внимание: move_uploaded_file () [function.move загруженным-файл]: Не удалось переместить 'C: \ WINDOWS \ Temp \ phpA30E.tmp' до './people.xml' в E: \ Inetpub \ виртуальных доменов \ mywebsite.com \ httpdocs \ свалка \ upload.php в строке 3

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

проверить процесс запуска приложения (обычно процесс вебсервер для PHP) имеет право писать там файл.

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

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

Ответил 06/08/2008 d 17:15
источник пользователем

голоса
0

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

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
Ответил 16/11/2012 d 13:51
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more