Файлы не загружаются на сервер с помощью скрипта PHP

Поэтому я следую простому учебнику / примеру о том, как загружать файлы на веб-сервер, используя HTML и PHP. Там нет ошибок, и все, кажется, работает нормально, но файл не сохраняется на веб-сервере …

Я использую экземпляр Amazon EC2.
РЕДАКТИРОВАТЬ:
Теперь у меня есть предупреждения / ошибки разрешения в моем выводе эха, как показано ниже, даже после запуска chmod 777 в каталогах

index.html

<form enctype="multipart/form-data" action="test.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

test.php

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png","tiff");
$temp = explode(".", $_FILES["uploadedfile"]["name"]);
$extension = end($temp);
echo "Upload attempt...: " . $_FILES["uploadedfile"]["name"] . "<br>";
if ((($_FILES["uploadedfile"]["type"] == "image/gif")
|| ($_FILES["uploadedfile"]["type"] == "image/jpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/tiff")
|| ($_FILES["uploadedfile"]["type"] == "image/jpg")
|| ($_FILES["uploadedfile"]["type"] == "image/pjpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/x-png")
|| ($_FILES["uploadedfile"]["type"] == "image/png"))
&& ($_FILES["uploadedfile"]["size"] < 20000000)
&& in_array($extension, $allowedExts)) {

if ($_FILES["uploadedfile"]["error"] > 0) {
echo "Return Code: " . $_FILES["uploadedfile"]["error"] . "<br>";
} else {
echo "Upload: " . $_FILES["uploadedfile"]["name"] . "<br>";
echo "Type: " . $_FILES["uploadedfile"]["type"] . "<br>";
echo "Size: " . ($_FILES["uploadedfile"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["uploadedfile"]["tmp_name"] . "<br>";
if (file_exists("~/upload/" . $_FILES["uploadedfile"]["name"])) {
echo $_FILES["uploadedfile"]["name"] . " already exists. ";
} else {
move_uploaded_file($_FILES["uploadedfile"]["tmp_name"],
"../upload/" . $_FILES["uploadedfile"]["name"]);
echo "Stored in: " . "../upload/" . $_FILES["uploadedfile"]["name"];
}
}
} else {
echo "Invalid file";
}
?>

эхо-выход

Upload attempt...: storeflyer.jpg
Upload: storeflyer.jpg
Type: image/jpeg
Size: 35.1708984375 kB
Temp file: /tmp/phpqq6J4C
Warning: move_uploaded_file(../upload/storeflyer.jpg): failed to open stream: Permission denied in ../test.php on line 29 Warning: move_uploaded_file(): Unable to move '/tmp/phpqq6J4C' to '../upload/storeflyer.jpg' in ../test.php on line 29 Stored in: ../upload/storeflyer.jpg

1

Решение

Вы используете ~/upload/ с тильдой и косой чертой как путь.

Вы должны удалить все тильды и косые черты, используя upload/ как относительный путь.

Или, как указано sonic720 в комментарии: /var/www/upload это будет отличаться от сервера к серверу, так что ваш может быть что-то вроде /var/users/www/public_html/upload это еще один вариант.

использование upload/ если вы выполняете ваш скрипт из корня вашего сервера.

Если выполняется из подпапки, вам может потребоваться настроить его, например: ../upload/

Также проверьте наличие разрешений для папок. Или 0755 или же 0777, еще 0755 безопаснее в использовании.

  • Около: __DIR__ & BASE_PATH

Consult: http://php.net/manual/en/function.dirname.php


Редактировать:

Я заметил что-то еще echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; это должно читаться как echo "Return Code: " . $_FILES["uploadedfile"]["error"] . "<br>";


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

error_reporting(E_ALL);
ini_set('display_errors', 1);

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector