Всем привет.
Я в PHP не особо силен, но пролистав несколько страниц гугла я понял что моя ситуация не типичная.
Мне нужно с помощью скрипта загрузить файл на сервер. Для этого я нашел в интернете очень простой html-файл:
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
и такой же простой скрипт:
<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file<br />";
print_r($_FILES);
}
?>
Как и следовало ожидать — файл не загружается. Вся проблема в том, что в $_FILES[«file»][«error»] ничего не содержится. После «загрузки» массив $_FILES имеет следующий вид:
Array ( [file] => Array ( [name] => avatar-95x95.jpg ) )
в php.ini:
post_max_size = 8M
file_uploads = On
upload_max_filesize = 2M
и т.д., все в общем учтено и все выставлено как нужно.
Картинку я загружаю именно нормальную JPEG, с расширением jpg. Впрочем, даже когда я вообще убираю все эти проверки на тип файла — все равно все то же самое происходит. Пробовал на разных браузерах. Скрипт крутится на моем instance на amazon aws ec2 под управлением SuSE Linux, Apache2.