Часті помилки виникають при завантаженні файлів на сервер на php

Кожен початківець веб розробник стикався з проблемами при завантаженні файлу на сервер. Зараз я хочу створити невеликий скрипт для закачування на сервер. і на його прикладі випробувати всі найбільш часті проблеми, з якими стикається будь-який php програміст.

Наш тестовий файл буде такою:

Тепер подивимося що я тут написав:

Найперша перевірка - це перевірка на наявність завантаження. Якщо його немає, виводимо повідомлення на екран «Виберіть файл». Якщо файл обраний, то починаємо нашу завантаження.

Для початку, в тегах

 я показую вміст масиву $ _FILES. Всі файли вибрані в input типу file, відправляються в цей масив. Щоб було зрозуміліше з чим ми працюємо, весь його вміст я виводжу на екран в отформатированном вигляді (print_r ($ _ FILES)). Тепер коли ми виберемо якийсь файл, і спробуємо його завантажити, ми побачимо щось подібне:

Що означають елементи цього масиву, ми розглянемо пізніше. А зараз подивимося як проходить завантаження файлу на PHP.

Перед потраплянням файлу в масив $ _FILES. файл завантажується в тимчасову директорію на сервері (до речі, саме вона і показується в елементі tmp_name масиву $ _FILES). Потім за допомогою функції move_uploaded_file () цей файл копіюється з тимчасової директорії в зазначену другим параметром у функції (перший, як вже стало напевно зрозуміло - це шлях до файлу в тимчасовій директорії). Варто зазначити що шлях до директорії потрібно вказувати щодо кореня сервер. Для цього використовуємо елемент глобального масиву - $ _SERVER [ 'DOCUMENT_ROOT']. На цьому завантаження файлу закінчена. Я думаю тут нічого немає складного.

Тепер розглянемо що ж знаходиться в масиві $ _FILES.

В даний масив потрапляють всі файли вибрані в формі, попередньо завантажившись в тимчасову директорію. Ще туди відразу заноситься інформація про фото:

Тепер розглянемо часті помилки при завантаженні файлів на сервер на PHP.

В елементі масиву error може бути тільки 8 варіантів помилок (половина додана в 5 версії):

Так само часто новачки допускають такі помилки при завантаженні файлів на PHP:

  • Не вказаний enctype = "multipart / form-data" у формі завантажувача
  • Файлу завантажувачу не дані права на запис файлу. Для цього в будь-якому FTP менеджері, наприклад FileZilla вибрати файл завантажувач, натиснути правою кнопкою миші і вибрати пункт «Права доступу до файлу». Потім поставити галочки навпроти всіх пунктів «Запис».
  • Звертаються не по тому імені фала, зазначеного в атрибуті форми - name.

Настійно рекомендую на етапі налагодження завантаження файлу постійно виводити вміст масиву $ _FILES наступним кодом:

Саме так я зробив у своєму прикладі щоб постійно контролювати вміст цього масиву.

Схожі статті