2016-02-25 4 views
0

В основном, метод возвращает ложь каждый раз, когда я попытался изменить папку TMP и даны разрешения PHP письма в/загрузки папкиmove_uploaded_file() возвращает ложь

PHP-скрипт:

<?php 
$uploadfile = $_FILES['userfile']['name']; 

echo '<pre>'; 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], "uploads/$uploadfile")) { 
    echo "Uploaded.\n"; 
} else { 
    echo "Not uploaded.\n"; 
} 
echo 'Here is some more debugging info:'; 
print_r($_FILES); 

print "</pre>"; 

?> 

Как Я дал разрешение: https://gyazo.com/89a706adfefea2a2edf090e7cc11cf66

форма в HTML файл:

<form method="POST" action="savepic.php" enctype="multipart/form-data"> 
    <input class="file" type="file" name="userfile"> 
    <input type="submit" value="Upload"> 
    <p>Not available...</p> 
</form> 

Журнал ошибок дал мне эти два:

PHP Предупреждение: move_uploaded_file (добавление/65 wat.jpg): не удалось открыть поток: Разрешение отказано в C: \ Inetpub \ Wwwroot \ УПТ \ тест \ savepic. php on line 5

PHP Предупреждение: move_uploaded_file(): Не удается переместить 'C: \ Windows \ Temp \ php8F38.tmp' в 'uploads/65 wat.jpg' в C: \ inetpub \ wwwroot \ UPT \ test \ savepic.php в строке 5

Вся помощь очень ценится.

+0

проверить права доступа к файлам \ директориям источника и цели –

+0

Ну, я дал пользователю «IIS_IUSRS» полный контроль над обеими папками, источником и целевым каталогом, и он по-прежнему дает мне те же ошибки. –

ответ

0

Итак, я наконец выяснил, в чем была настоящая проблема. Папка, которую я пыталась загрузить, была создана моим собственным пользователем, то есть она не принадлежала статье IIS (This, которая очень помогла в определении этого).

Поэтому мне пришлось сменить владельца папки на IIS_IUSRS, и после этого скрипт PHP работал.

Сведения об изменении владельцев папок прекрасно описаны в статье, упомянутой ранее.

+1

Итак, вы отвечали, чтобы делать то, что я предлагал. Интересно. – Iwnnay

+0

@Iwnnay Не совсем так, поскольку я возился с разрешениями пользователей при выполнении ваших инструкций, но не с владением папкой. С другой стороны, право собственности может быть принято как разрешение. Зависит от точки зрения. –

0

Это кажется необычным, но у вас могут не быть разрешения на «C: \ Windows \ Temp». Или у вашего сервера могут быть разрешения. Есть два способа исправить это:

  1. Изменение «upload_tmp_dir» настройки в файле php.ini в каталог, который вы или сервер сделать разрешения на

  2. Найти каталог Temp и изменения разрешения на него так же, как и в каталоге uploads.

+0

Я попытался изменить 'upload_tmp_dir', но он не работает. Не могли бы вы привести мне пример, как он должен выглядеть? –

+0

Перезагрузили ли вы сервер IIS после изменения файла php.ini? – Iwnnay

+0

Сделал это сейчас, все та же проблема. –

Смежные вопросы