Хостинг. Не удаётся загрузить файл на сервер

tolik555.83
10 лет
0

Помогите пожалуста!
Вот код php
<?php
// Загрузка файлов на сервер
// register_globals=Off

// Если upload файла
if(isset($_FILES["pricefile"]))
{
$myfile = $_FILES["pricefile"]["tmp_name"];
$myfile_name = $_FILES["pricefile"]["name"];
$myfile_size = $_FILES["pricefile"]["size"];
$myfile_type = $_FILES["pricefile"]["type"];
$error_flag = $_FILES["pricefile"]["error"];

// Если ошибок не было
if($error_flag == 0)
{
print("Имя файла на нашем сервере (во время запроса): ".$myfile."<br>");
print("Имя файла на компьютере пользователя: ".$myfile_name."<br>");
print("MIME-тип файла: ".$myfile_type."<br>");
print("Размер файла: ".$myfile_size."<br><br>");


// Получаем содержимое файла
$fp = fopen($myfile,"r");
$content = fread($fp, filesize($myfile));
fclose($fp);

// Вывод содержимого файла
print($content);
// Каталог, в который мы будем принимать файл:
$uploaddir = $_SERVER['DOCUMENT_ROOT'] .'/price/';
$uploadfile = $uploaddir.basename($_FILES['pricefile']['name']);
echo $uploadfile;
// Копируем файл из каталога для временного хранения файлов:
if (@move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }

} // end of if 2
} // end of if 1
?>
Всё время выдаёт "Ошибка! Не удалось загрузить файл на сервер!"
Сообщений об ошибках PHP никаких нет
Права доступа на папку 777

rudenko
10 лет
0

1. У вас ошибка в коде. Строку
if (@move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
необходимо заменить на
if (@move_uploaded_file($_FILES['pricefile']['tmp_name'], $uploadfile))

2. Для отладки PHP скриптов, рекомендую ставить в начале скрипта вывод ошибок:
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
и убрать подавление ошибок со всех функций в виде префикса @. Тогда сразу видны все ошибки в скрипте.

3. Ставить права на директорию 777 не рекомендую. Так как у нас на хостинге каждый работает от имени отдельного пользователя, который независит от других.

4. Исходный код рабочего PHP скрипта:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Загрузка файлов на сервер
// register_globals=Off

// Если upload файла
if(isset($_FILES["pricefile"]))
{
$myfile = $_FILES["pricefile"]["tmp_name"];
$myfile_name = $_FILES["pricefile"]["name"];
$myfile_size = $_FILES["pricefile"]["size"];
$myfile_type = $_FILES["pricefile"]["type"];
$error_flag = $_FILES["pricefile"]["error"];

// Если ошибок не было
if($error_flag == 0)
{
print("Имя файла на нашем сервере (во время запроса): ".$myfile."<br>");
print("Имя файла на компьютере пользователя: ".$myfile_name."<br>");
print("MIME-тип файла: ".$myfile_type."<br>");
print("Размер файла: ".$myfile_size."<br><br>");


// Получаем содержимое файла
$fp = fopen($myfile,"r");
$content = fread($fp, filesize($myfile));
fclose($fp);

// Вывод содержимого файла
// print($content);
// Каталог, в который мы будем принимать файл:
$uploaddir = $_SERVER['DOCUMENT_ROOT'] .'/price/';
$uploadfile = $uploaddir.basename($_FILES['pricefile']['name']);
if (!is_dir($uploaddir)) mkdir($uploaddir, 0750, true);
// echo $uploadfile;
// Копируем файл из каталога для временного хранения файлов:
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile);
if (@move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }

} // end of if 2
} // end of if 1
?>
<form action="/test.php" enctype="multipart/form-data" method="POST">
<input type="file" name="pricefile">
<input type="submit">
</form>

tolik555.83
10 лет
0

Дурень я невнимательный!!!)))
Илья,Огромное спасибо!!! Всё заработало, но, есть но... После отправки файла всё равно пишет "Ошибка! Не удалось загрузить файл на сервер!", исправил удалением строки "move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile);" перед if

rudenko
10 лет
0

Да, точно, извиняюсь, это я для отлидки в отдельную строку вынес функцию move_uploaded_file().

Тема закрыта.