Ошибки — загрузка базового файла PHP

#php #file #file-upload #upload

#php #файл #загрузка файла #загрузка

Вопрос:

HTML-код

 <html>
<title>File</title>
<body>

<form enctype="multipart/form-data" action="upload_3.php" method="POST">
  <input type="hidden" name="MAX_FILE_SIZE" value="300000">
  Invia questo file: <input name="userfile" type="file"></br>
  <input type="submit" value="Invia File">
</form>

</body>

</html>
  

Код PHP:

 ?php
if (!isset($_FILES['userfile']) || !is_uploaded_file($_FILES['userfile']['tmp_name'])) {
  echo 'Non hai inviato nessun file...';
  exit;    
}


if (move_uploaded_file($_FILES['userfile']['tmp_name'], "/var/www/html" . $_FILES['userfile']['name'])) {

echo "Ce l'hai fatta!";
}
else{
echo "Riprova bro";
}

?>
  

Я не понимаю причину, по которой я всегда получаю ошибку «Riprova bro».

С помощью функции «move_uploaded_file» я должен переместить файл из временного расположения в /var / www / html, но это не работает.

Ошибки

Это моя конфигурация внутри файла php.ini: Конфигурация PHP.ini

Спасибо.

Комментарии:

1. "/var/www/html" вероятно, отсутствует косая черта в конце, например "/var/www/html/"

2. Вам нужен окончательный / ввод "/var/www/html" . Кроме того, проверьте разрешения.

3. Какое точное сообщение об ошибке вы получаете?

4. Что вы пытались устранить проблему? Вы проверили целевое назначение загруженного файла? Как насчет разрешений?

5. Смотрите мой обновленный ответ, я надеюсь, он исправит вашу проблему.

Ответ №1:

Ваш код в порядке. Вы не можете загрузить файл по 3 причинам:

1) При достижении limit ( MAX_FILE_SIZE ) вы не можете загрузить ни один файл, 300000 равный примерно 300 KB , попробуйте увеличить свой limit .

У вас есть:

 <input type="hidden" name="MAX_FILE_SIZE" value="300000">
  

Попробуйте с:

 <input type="hidden" name="MAX_FILE_SIZE" value="3000000">
  

Где 3000000 примерно 3 MB

2) Вы предполагаете, что ваш путь существует, сначала проверьте, существует ли он, и если нет, создайте свой полный путь рекурсивно и установите в while разрешение ( 0755 ):

 if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/var/www/html/")) { 
  @mkdir($_SERVER['DOCUMENT_ROOT'] . "/var/www/html/", 0755, true);
}
  

3) В настоящее время вы предполагаете, что path является правильным, false, путь "/var/www/html" не является, попробуйте $_SERVER[‘DOCUMENT_ROOT’] и косую черту ( / ) в конце вашего пути. Посмотрите на это изменение:

 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . "/var/www/html/" . $_FILES['userfile']['name'])) {
  

С этими 3 настройками ваш скрипт работает отлично. Теперь он печатает: Ce l'hai fatta!

Наконец, я предлагаю вам исправить:

?php с <?php

Я надеюсь, что это поможет.

Комментарии:

1. Пожалуйста, не предлагайте «скопировать это»-ответы. Скорее объясните, что пошло не так в исходном коде и как это можно исправить

2. Извините, но я понятия не имею, как кто-либо может найти связь между исходным сообщением об ошибке и вашим кодом. Это работает совершенно по-другому