PHP Найбільш поширені помилки
Опція MAX_FILE_SIZE не повинна дозволяти передачу файлів, розмір яких перевищує ліміт, встановлений конфігураційною директивою upload_max_filesize у php.ini. Обмеження за замовчуванням складає 2 мегабайти.
Якщо встановлено обмеження пам'яті, вам може знадобитися збільшити значення опції memory_limit. Переконайтеся, що значення memory_limit досить велике.
У випадку, якщо опція max_execution_time встановлена надто невеликим значенням, потрібний час роботи скрипта може перевищувати це значення. Переконайтеся, що значення max_execution_time досить велике.
Примітка: Директива max_execution_time стосується виключно часу, який використовується безпосередньо самим скриптом. Час, витрачений на зовнішні дії, такі як системні виклики за допомогою функції system() або sleep() , звернення до бази даних, а також час, витрачений на завантаження файлу та інші дії, що відбуваються поза скриптом, не враховуються при визначенні максимально допустимого проміжку часу, відведеного до виконання скрипта.
Директива max_input_time вказує максимально допустимий час в секундах для отримання вхідних даних, у тому числі файлів, що завантажуються. У випадку, якщо ви маєте справу з кількома або великими файлами, або видалені користувачі використовують повільний канал, обмеження за промовчанням 60 секунд може бути перевищено.
Якщо директива post_max_size дуже мала, великі файли не можуть бути завантажені на сервер. Переконайтеся, що значення директиви post_max_size досить велике.
Починаючи з версії PHP 5.2.12, опція max_file_uploads контролює максимальну кількість файлів, що завантажуються, протягом одного запиту. Якщо завантажується більше файлів, ніж зазначено в цьому обмеженні, томасив $_FILES припинить подальшу обробку файлів після досягнення цього обмеження. Наприклад, якщо max_file_uploads встановлено в 10, $_FILES ніколи не міститиме більше 10 елементів.
Якщо не перевіряти, з якими файлами ви працюєте, користувачі можуть отримати доступ до конфіденційної інформації, розміщеної в інших директоріях.
Слід зазначити, що CERN httpd може відсікти все, що йде після першого пропуску в заголовку content-type, що отримується від клієнта. Якщо у вас такий випадок, CERN httpd не зможе коректно завантажити файли.
Оскільки різні системи по-різному працюють із файловою структурою, немає жодних гарантій того, що файли з екзотичними іменами (наприклад, які містять пробілові символи) будуть оброблені коректно.
Розробники не повинні використовувати однакові імена для звичайних полів введення (тег input) і полів вибору файлу в межах однієї форми (наприклад, використовуючи ім'я для тега input на кшталт foo[]).