Не удалось создать временный файл во время загрузки


При попытке загрузить файл с помощью формы и PHP/IIS 7 я получаю следующее сообщение:

PHP Warning:  File upload error - unable to create a temporary file in Unknown on line 0

Моя форма:

<form action="acciones.php" id="form3" method="POST" enctype="multipart/form-data">
    <input type="hidden" value="3" name="accion">
    <input type="text" name="nombre" placeholder="Nombre">
        <input type="file" name="imagen" accept="image/x-png, image/gif, image/jpeg" />
    <input type="button" id="envio" class="button azul" value="Agregar" onclick="envios()">
</form>

Мой PHP-код и ссылка:

$target = "/images/";
$target = $target . basename( $_FILES['imagen']['name']);
//This gets all the other information from the form
$name=$_POST['nombre'];
$pic=($_FILES['imagen']['name']);

//Writes the information to the database
$query = "INSERT INTO Playeras (Nombre, Ruta) VALUES ('$name', $pic')";
mysql_query($query, $conexion -> conn) or die("Error: ".mysql_error()) ;

//Writes the photo to the server
if(move_uploaded_file($_FILES['imagen']['tmp_name'], $target))
{
    //Tells you if its all ok
    echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
}
else 
{
 //Gives and error if its not
 echo "Sorry, there was a problem uploading your file.";
}

Я установил путь для временных файлов:

upload_tmp_dir = "C:/Users/server/Pictures/tmp"

И предоставил разрешения для IIS_IUSRS и IUSR с полным контролем. Но каждый раз я получаю ошибку. Я не знаю, что я делаю не так. Если бы кто-нибудь мог мне помочь, это было бы здорово.

Author: Community, 2013-05-10

2 answers

Заставил это сработать.

Изменено

upload_tmp_dir = "C:/Users/server/Pictures/tmp" to "C:\TEMP".

Создайте временную папку в C и предоставьте разрешения. Похоже, это работает только при прямом подключении к C:.

 4
Author: aerojun, 2013-05-12 02:34:16

Я наконец-то выяснил, почему на самом деле происходит эта ошибка:

Учетная запись IUSR (или учетная запись, которую олицетворяет процесс php, в зависимости от настроек аутентификации) должна иметь возможность перечислять Родительскую папку папки upload_tmp_dir.

Такое поведение странно, потому что это право не требуется для папок журнала или сеансов.

Мое решение заключается в следующем (используя пути из приведенного выше сообщения):

  1. Создайте папку "C:/Users/server/Pictures/tmp "
  2. Предоставьте права на изменение IUSR (или другому пользователю) в этой папке
  3. Создайте папку"C:/Users/server/Pictures/tmp/uploads "
  4. Редактировать php.ini: upload_tmp_dir= "C:/Users/server/Pictures/tmp/uploads "

В качестве альтернативы вы можете предоставить права только на чтение "только для этой папки" в родительской папке"C:/Users/server/Pictures/tmp ". В этом случае вам не нужна другая вложенная папка.

 0
Author: japi, 2016-03-18 16:17:59