Files коды ошибок

Суперглобальный массив $_FILES встречается в работе с PHP при загрузке файлов на сервер. Помимо основных сведений о загружаемом файле, содержит сведения об ошибке загрузки в $_FILES[‘my_file’][‘error’], если она возникла. Это значение массива может содержать:

UPLOAD_ERR_OK значение: 0;
Файл был успешно загружен на сервер
UPLOAD_ERR_INI_SIZE значение: 1;
Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini.
UPLOAD_ERR_FORM_SIZE значение: 2;
Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.
UPLOAD_ERR_PARTIAL значение: 3;
Загружаемый файл был получен только частично.
UPLOAD_ERR_NO_FILE значение: 4;
Файл не был загружен.

В PHP-скрипте обработка загруженных через форму происходит через глобальный массив $_FILES, рассмотрим его содержимое:

1

Загрузка одного файла

Чтобы форма отправила файл, необходимо использовать только метод POST для отправки данных и добавить к тегу <form> атрибут enctype="multipart/form-data", который определяет способ кодирования данных формы при их отправке на сервер.

<form action="/index.php" method="post" enctype="multipart/form-data">
	<input type="file" name="file-1">
	<input type="submit" value="Отправить">
</form>

HTML

Код скрипта index.php:

<?php
print_r($_FILES['file-1']);

PHP

Результат:

Array(
	[name] => image.jpg
	[type] => image/jpeg
	[tmp_name] => /home/user/temp/phpjX2YXo
	[error] => 0
	[size] => 119303
)

Описание значений массива $_FILES:

$_FILES['file-1']['name'] Оригинальное имя файла на компьютере клиента.
$_FILES['file-1']['type'] Mime-тип файла, в случае, если браузер предоставил такую информацию. Этот mime-тип не проверяется на стороне PHP, так что не полагайтесь на его значение без проверки.
$_FILES['file-1']['size'] Размер принятого файла в байтах.
$_FILES['file-1']['tmp_name'] Временное имя, с которым принятый файл был сохранен на сервере.
$_FILES['file-1']['error'] Код ошибки, которая может возникнуть при загрузке файла.

2

Загрузка несколько файлов

Для загрузки сразу нескольких файлов к <input type="file"> нужно добавить атрибут multiple, а к имени поля – [].

<form action="/index.php" method="post" enctype="multipart/form-data">
	<input type="file" name="file-2[]" multiple>
	<input type="submit" value="Отправить">
</form>

HTML

Код скрипта index.php

<?php
print_r($_FILES['file-2']);

PHP

Результат:

Array(
	[name] => Array(
		[0] => image.jpg
		[1] => arhive.zip
	)
	[type] => Array(
		[0] => image/jpeg
		[1] => application/zip
	)
	[tmp_name] => Array(
		[0] => /home/user/temp/phpK3h32F
		[1] => /home/user/temp/phpBrGxus
	)
	[error] => Array(
		[0] => 0
		[1] => 0
	)
	[size] => Array(
		[0] => 119303
		[1] => 6792
	)
)

Как видно, структура массива разделена по свойствам, а не по файлам. Для удобства работы с циклом foreach массив $_FILES можно преобразовать:

<?php
$files = array();
foreach($_FILES['file-2'] as $k => $l) {
	foreach($l as $i => $v) {
		$files[$i][$k] = $v;
	}
}		
$_FILES['file-2'] = $files;

print_r($_FILES);

PHP

Результат:

Array(
	[0] => Array(
		[name] => image.jpg
		[type] => image/jpeg
		[tmp_name] => /home/user/temp/phpKgSQbo
		[error] => 0
		[size] => 119303
	)
	[1] => Array(
		[name] => arhive.zip
		[type] => application/zip
		[tmp_name] => /home/user/temp/phpVht8LS
		[error] => 0
		[size] => 6792
	)
)

3

Максимальный размер загружаемого файла

Размер загружаемого файла можно ограничить, добавив в форму скрытое поле с максимальным размером файла <input type="hidden" name="MAX_FILE_SIZE" value="2097152">:

<form action="/index.php" method="post" enctype="multipart/form-data">
	<input type="hidden" name="MAX_FILE_SIZE" value="2097152"> 
	<input type="file" name="file-1">
	<input type="submit" value="Отправить">
</form>

HTML

В случае превышения размера файла в переменной $_FILES['file-1']['error'] будет ошибка с кодом «2».

4

Коды ошибок загрузки файлов

В случаи, если при загрузке файла произошла ошибка, в переменной $_FILES['file']['error'] будет содержатся её код. Возможны следующие значения:

Код Константа Описание
0 UPLOAD_ERR_OK Ошибок не возникло, файл успешно загружен на сервер.
1 UPLOAD_ERR_INI_SIZE Размер файла превысил максимально допустимый размер, который задан директивой upload_max_filesize
2 UPLOAD_ERR_FORM_SIZE Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.
3 UPLOAD_ERR_PARTIAL Загружаемый файл был получен только частично.
4 UPLOAD_ERR_NO_FILE Файл не был загружен.
6 UPLOAD_ERR_NO_TMP_DIR Отсутствует временная папка.
7 UPLOAD_ERR_CANT_WRITE Не удалось записать файл на диск (возникает, когда на хостинге закончилось место).
8 UPLOAD_ERR_EXTENSION PHP-расширение остановило загрузку файла.

5

Настройки PHP

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

Посмотреть установленные значения можно с помощью функции phpinfo(), в разделе «Core».

Раздел «Core» в phpinfo

В php.ini:

; Разрешение на загрузку файлов
file_uploads = On

; Максимальное время выполнения скрипта в секундах
max_execution_time = 60
 
; Максимальное потребление памяти одним скриптом
memory_limit = 64M
 
; Максимально допустимый размер данных отправляемых методом POST
post_max_size = 50M

; Папка для хранения файлов во время загрузки
upload_tmp_dir = home/user/temp
 
; Максимальный размер загружаемого файла
upload_max_filesize = 5M
 
; Максимально разрешённое количество одновременно загружаемых файлов
max_file_uploads = 10

В .htaccess:

# Разрешение на загрузку файлов
php_value file_uploads On

# Максимальное время выполнения скрипта в секундах
php_value max_execution_time 60
 
# Максимальное потребление памяти одним скриптом
php_value memory_limit 64M
 
# Максимально допустимый размер данных отправляемых методом POST
php_value post_max_size 50M

# Папка для хранения файлов во время загрузки
php_value upload_tmp_dir home/user/temp
 
# Максимальный размер загружаемого файла
php_value upload_max_filesize 5M
 
# Максимально разрешённое количество одновременно загружаемых файлов
php_value max_file_uploads 10

htaccess

В PHP скрипте:

<?php

// Разрешение на загрузку файлов
ini_set('file_uploads', 'On');

// Максимальное время выполнения скрипта в секундах
ini_set('max_execution_time', '60');
 
// Максимальное потребление памяти одним скриптом
ini_set('memory_limit', '64M');
 
// Максимально допустимый размер данных отправляемых методом POST
ini_set('post_max_size', '50M');

// Папка для хранения файлов во время загрузки
ini_set('upload_tmp_dir', 'home/user/temp');
 
// Максимальный размер загружаемого файла
ini_set('upload_max_filesize', '5M');
 
// Максимально разрешённое количество одновременно загружаемых файлов
ini_set('max_file_uploads', '10');

PHP

Другие публикации

Загрузка файлов через AJAX с помощью jQuery Form Plugin

Пример загрузки изображений через AJAX с помощью плагина jQuery Form Plugin.

Загрузка файлов через jQuery AJAX

В преведущей статье был приведен пример отправки файлов через AJAX с помощью плагина «jQuery Form Plugin». Но файлы…

Загрузка изображений с превью AJAX + PHP + MySQL

В данной статье представлена упрощенная реализация загрузки изображений с превью через AJAX с сохранением в базу данных…

Запрет выполнения PHP скриптов в директории

Если нужно запретить выполнение скриптов php в директории, например в uploads, нужно поместить туда файл .htaccess со…

Примеры отправки AJAX JQuery

AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.

Примеры использования cURL в PHP

cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS….

Объяснение сообщений об ошибках

PHP возвращает код ошибки наряду с другими
атрибутами принятого файла. Он расположен в массиве, создаваемом PHP
при загрузке файла, и может быть получен при обращении по ключу
error. Другими словами, код ошибки можно
найти в $_FILES[‘userfile’][‘error’].

UPLOAD_ERR_OK

Значение: 0; Ошибок не возникло, файл был успешно загружен на сервер.

UPLOAD_ERR_INI_SIZE

Значение: 1; Размер принятого файла превысил максимально допустимый
размер, который задан директивой upload_max_filesize
конфигурационного файла php.ini.

UPLOAD_ERR_FORM_SIZE

Значение: 2; Размер загружаемого файла превысил значение MAX_FILE_SIZE,
указанное в HTML-форме.

UPLOAD_ERR_PARTIAL

Значение: 3; Загружаемый файл был получен только частично.

UPLOAD_ERR_NO_FILE

Значение: 4; Файл не был загружен.

UPLOAD_ERR_NO_TMP_DIR

Значение: 6; Отсутствует временная папка.

UPLOAD_ERR_CANT_WRITE

Значение: 7; Не удалось записать файл на диск.

UPLOAD_ERR_EXTENSION

Значение: 8; Модуль PHP остановил загрузку файла. PHP не
предоставляет способа определить, какой модуль остановил
загрузку файла; в этом может помочь просмотр списка загруженных
модулей с помощью phpinfo().

Viktor

8 years ago


Update to Adams old comment.

This is probably useful to someone.

<?php

$phpFileUploadErrors

= array(
   
0 => 'There is no error, the file uploaded with success',
   
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
   
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
   
3 => 'The uploaded file was only partially uploaded',
   
4 => 'No file was uploaded',
   
6 => 'Missing a temporary folder',
   
7 => 'Failed to write file to disk.',
   
8 => 'A PHP extension stopped the file upload.',
);


Anonymous

14 years ago


[EDIT BY danbrown AT php DOT net: This code is a fixed version of a note originally submitted by (Thalent, Michiel Thalen) on 04-Mar-2009.]

This is a handy exception to use when handling upload errors:

<?php
class UploadException extends Exception

{

    public function
__construct($code) {

       
$message = $this->codeToMessage($code);

       
parent::__construct($message, $code);

    }

    private function

codeToMessage($code)

    {

        switch (
$code) {

            case
UPLOAD_ERR_INI_SIZE:

               
$message = "The uploaded file exceeds the upload_max_filesize directive in php.ini";

                break;

            case
UPLOAD_ERR_FORM_SIZE:

               
$message = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form";

                break;

            case
UPLOAD_ERR_PARTIAL:

               
$message = "The uploaded file was only partially uploaded";

                break;

            case
UPLOAD_ERR_NO_FILE:

               
$message = "No file was uploaded";

                break;

            case
UPLOAD_ERR_NO_TMP_DIR:

               
$message = "Missing a temporary folder";

                break;

            case
UPLOAD_ERR_CANT_WRITE:

               
$message = "Failed to write file to disk";

                break;

            case
UPLOAD_ERR_EXTENSION:

               
$message = "File upload stopped by extension";

                break;

            default:

$message = "Unknown upload error";

                break;

        }

        return
$message;

    }

}
// Use

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {

//uploading successfully done

} else {

throw new
UploadException($_FILES['file']['error']);

}

?>


adam at gotlinux dot us

18 years ago


This is probably useful to someone.

<?php

array(

       
0=>"There is no error, the file uploaded with success",

       
1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini",

       
2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"

       
3=>"The uploaded file was only partially uploaded",

       
4=>"No file was uploaded",

       
6=>"Missing a temporary folder"

);

?>


stephen at poppymedia dot co dot uk

17 years ago


if post is greater than post_max_size set in php.ini

$_FILES and $_POST will return empty


svenr at selfhtml dot org

16 years ago


Clarification on the MAX_FILE_SIZE hidden form field and the UPLOAD_ERR_FORM_SIZE error code:

PHP has the somewhat strange feature of checking multiple "maximum file sizes".

The two widely known limits are the php.ini settings "post_max_size" and "upload_max_size", which in combination impose a hard limit on the maximum amount of data that can be received.

In addition to this PHP somehow got implemented a soft limit feature. It checks the existance of a form field names "max_file_size" (upper case is also OK), which should contain an integer with the maximum number of bytes allowed. If the uploaded file is bigger than the integer in this field, PHP disallows this upload and presents an error code in the $_FILES-Array.

The PHP documentation also makes (or made - see bug #40387 - http://bugs.php.net/bug.php?id=40387) vague references to "allows browsers to check the file size before uploading". This, however, is not true and has never been. Up til today there has never been a RFC proposing the usage of such named form field, nor has there been a browser actually checking its existance or content, or preventing anything. The PHP documentation implies that a browser may alert the user that his upload is too big - this is simply wrong.

Please note that using this PHP feature is not a good idea. A form field can easily be changed by the client. If you have to check the size of a file, do it conventionally within your script, using a script-defined integer, not an arbitrary number you got from the HTTP client (which always must be mistrusted from a security standpoint).


jalcort at att dot net

3 years ago


When uploading a file, it is common to visit the php.ini and set up upload_tmp_dir = /temp but in the case of some web hostess as fatcow you need to direct not only /tmp but upload_tmp_dir = /hermes/walnaweb13a/b345/moo.youruser/tmp

If not the $_FILES show you an error #6 "Missing a temporary folder


roland at REMOVE_ME dot mxchange dot org

5 years ago


I have expanded @adam at gotlinux dot us's example a bit with proper UPLOAD_FOO constants and gettext support. Also UPLOAD_ERR_EXTENSION is added (was missing in his version). Hope this helps someone.

<?php
class Some {
   
/**
     * Upload error codes
     * @var array
     */
   
private static $upload_errors = [];

    public function

__construct() {
       
// Init upload errors
       
self::$upload_errors = [
           
UPLOAD_ERR_OK => _('There is no error, the file uploaded with success.'),
           
UPLOAD_ERR_INI_SIZE => _('The uploaded file exceeds the upload_max_filesize directive in php.ini.'),
           
UPLOAD_ERR_FORM_SIZE => _('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.'),
           
UPLOAD_ERR_PARTIAL => _('The uploaded file was only partially uploaded.'),
           
UPLOAD_ERR_NO_FILE => _('No file was uploaded.'),
           
UPLOAD_ERR_NO_TMP_DIR => _('Missing a temporary folder.'),
           
UPLOAD_ERR_CANT_WRITE => _('Cannot write to target directory. Please fix CHMOD.'),
           
UPLOAD_ERR_EXTENSION => _('A PHP extension stopped the file upload.'),
        ];
    }
}
?>


Jeff Miner mrjminer AT gmail DOT com

12 years ago


One thing that is annoying is that the way these constant values are handled requires processing no error with the equality, which wastes a little bit of space.  Even though "no error" is 0, which typically evaluates to "false" in an if statement, it will always evaluate to true in this context.

So, instead of this:

-----

<?php

if($_FILES['userfile']['error']) {

 
// handle the error

} else {

 
// process

}

?>

-----

You have to do this:

-----

<?php

if($_FILES['userfile']['error']==0) {

 
// process

} else {

 
// handle the error

}

?>

-----

Also, ctype_digit fails, but is_int works.  If you're wondering... no, it doesn't make any sense.

To Schoschie:

You ask the question:  Why make stuff complicated when you can make it easy?  I ask the same question since the version of the code you / Anonymous / Thalent (per danbrown) have posted is unnecessary overhead and would result in a function call, as well as a potentially lengthy switch statement.  In a loop, that would be deadly... try this instead:

-----

<?php

$error_types
= array(

1=>'The uploaded file exceeds the upload_max_filesize directive in php.ini.',

'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.',

'The uploaded file was only partially uploaded.',

'No file was uploaded.',

6=>'Missing a temporary folder.',

'Failed to write file to disk.',

'A PHP extension stopped the file upload.'

);
// Outside a loop...

if($_FILES['userfile']['error']==0) {

 
// process

} else {

 
$error_message = $error_types[$_FILES['userfile']['error']];

 
// do whatever with the error message

}
// In a loop...

for($x=0,$y=count($_FILES['userfile']['error']);$x<$y;++$x) {

  if(
$_FILES['userfile']['error'][$x]==0) {

   
// process

 
} else {

   
$error_message = $error_types[$_FILES['userfile']['error'][$x]];

   
// Do whatever with the error message

 
}

}
// When you're done... if you aren't doing all of this in a function that's about to end / complete all the processing and want to reclaim the memory

unset($error_types);

?>


jille at quis dot cx

14 years ago


UPLOAD_ERR_PARTIAL is given when the mime boundary is not found after the file data. A possibly cause for this is that the upload was cancelled by the user (pressed ESC, etc).

sysadmin at cs dot fit dot edu

18 years ago


I noticed that on PHP-4.3.2 that $_FILES can also not be set if the file uploaded exceeds the limits set by upload-max-filesize in the php.ini, rather than setting error $_FILES["file"]["error"]

tyler at fishmas dot org

18 years ago


In regards to the dud filename being sent, a very simple way to check for this is to check the file size as well as the file name.  For example, to check the file size simple use the size attribute in your file info array:

<?php

if($_FILES["file_id"]["size"]  == 0)

{

        
// ...PROCESS ERROR

}

?>


Tom

12 years ago


Note: something that might surprise you, PHP also provides a value in the $_FILES array, if the input element has no value at all, stating an error UPLOAD_ERR_NO_FILE.

So UPLOAD_ERR_NO_FILE is not an error, but a note that the input element just had no value. Thus you can't rely on the $_FILES array to see if a file was provided. Instead you have to walk the array and check every single damn entry - which can be quite difficult since the values may be nested if you use input elements named like "foo[bar][bla]".

Seems like PHP just introduced you to yet another common pitfall.


admin at compumatter dot com

3 years ago


We use this function to handle file uploads.

Since $_FILES allows for more than a single file, this loops through each file and if there's an error, it is displayed in human readable language to the error log and then returned / exited.  You can adjust that to echo's if preferred:

function file_upload_test($messageBefore="CM FILE UPLOAD MESSAGE"){
    global $_FILES;
    # a single file limit
    $upload_max_size = ini_get('upload_max_filesize');
    # the combination of a batch o multiple files
    $post_max_size = ini_get('post_max_size');
    # array of possible fails which are retuned below in if $key=error section
    $phpFileUploadErrors = array(
        0 => 'There is no error, the file uploaded with success',
        1 => 'Exceeds php.ini upload_max_filesize of '.$upload_max_size.'MB',
        2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
        3 => 'The uploaded file was only partially uploaded',
        4 => 'No file was uploaded',
        6 => 'Missing a temporary folder',
        7 => 'Failed to write file to disk.',
        8 => 'A PHP extension stopped the file upload.',
    );

    error_log("========================================");
    error_log("$messageBefore");
    error_log("========================================");
    foreach ($_FILES['cmmediabrowsedfor'] as $key => $value) {
       ${$key}=$value;
       error_log('$_FILES ['.$key.'] = ['.$value.']');
       if(is_array($value)){
            foreach ($value as $key2 => $value2) {
                error_log('   >   $_FILES ['.$key.']['.$key2.'] = '.$value2);
                if($key=='error'){
                     error_log('   ******* CM Failed Upload: '.$phpFileUploadErrors[$value2]);
                     error_log('           Exit / Return in plugins/cm-alpha/php/images/img-create-tmp.php');
                     error_log(' ');
                     exit;
                }
            }
       }
    }
    if(!file_exists($_FILES["cmmediabrowsedfor"]["tmp_name"][0]) || !is_uploaded_file($_FILES["cmmediabrowsedfor"]["tmp_name"][0])) {
        error_log("NO FILE GOT UPLOADED ");
    } else {
        error_log("SUCCESS FILE GOT UPLOADED ");
    }
}


rlerne at gmail dot com

8 years ago


This updates "adam at gotlinux dot us" above and makes it version aware, and also adds newer constants to the array.

The reason we want to check the version is that the constants are not defined in earlier versions, and they appear later in the array. They would effectively overwrite the "0" index (no error) with an error message when the file actually uploaded fine.

It also drops the constant's value (0,1,2, etc) for the errors, in the likely event that they are changed later (the code should still work fine).

<?php

$upload_errors

= array(
   
0                        => "There is no error, the file uploaded with success"
   
,UPLOAD_ERR_INI_SIZE    => "The uploaded file exceeds the upload_max_filesize directive in php.ini"
   
,UPLOAD_ERR_FORM_SIZE    => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"
   
,UPLOAD_ERR_PARTIAL        => "The uploaded file was only partially uploaded"
   
,UPLOAD_ERR_NO_FILE        => "No file was uploaded"
);

if (

version_compare(PHP_VERSION, '5.0.3') >= 0)
   
$upload_errors[UPLOAD_ERR_NO_TMP_DIR] = "Missing a temporary folder";

if (

version_compare(PHP_VERSION, '5.1.0') >= 0)
   
$upload_errors[UPLOAD_ERR_CANT_WRITE] = "Failed to write to disk";

if (

version_compare(PHP_VERSION, '5.2.0') >= 0)
   
$upload_errors[UPLOAD_ERR_EXTENSION] = "File upload stopped by extension";
?>


belowtherim2000 at yahoo dot com

15 years ago


I've been playing around with the file size limits and with respect to the post_max_size setting, there appears to be a hard limit of 2047M.  Any number that you specify above that results in a failed upload without any informative error describing what went wrong.  This happens regardless of how small the file you're uploading may be.  On error, my page attempts to output the name of the original file.  But what I discovered is that this original file name, which I maintained in a local variable, actually gets corrupted.  Even my attempt to output the error code in $_FILES['uploadedfiles']['error'] returns an empty string/value.

Hopefully, this tidbit will save someone else some grief.


viseth10 at gmail dot com

5 years ago


[Well just a little note. ]
That UploadException class example posted on top by anonymous is great. It works good. But there is a certain problem. You know there are two sides to generating errors.
First -> for the client side.
Second -> for the developers who will use your script

But i see only one side to generating Exceptions. ie For the developers.

Why ? Because when you generate an Exception, your script will come to an halt and do whatever you have defined in catch clause.
Now you dont want any client to see the Exception, do you ? I will not. The client will want to know what error occured in simple words they can understand instead of wanting their web app crashed if upload fails. So,  dont generate exceptions. These errors should be collected and shown to client in an elegant way. That's a little advice.
Keep developing smarter.


krissv at ifi.uio.no

18 years ago


When $_FILES etc is empty like Dub spencer says in the note at the top and the error is not set, that might be because the form enctype isnt sat correctly. then nothing more than maybe a http server error happens.

enctype="multipart/form-data" works fine


roger dot vermeir at nokia dot com

4 years ago


Just found out that it is very important to define the
input type="hidden" name="MAX_FILE_SIZE" value=...
AFTER defining the input type="FILE" name=...
in your html/php.
If you swap them around, you will keep getting the filesize exceeded (error 2)!
Hope this helps.
Roger

Dub Spencer

18 years ago


Upload doesnt work, and no error?

actually, both $_FILES and $_REQUEST in the posted to script are empty?

just see, if  "post_max_size" is lower than the data you want to load.

in the apache error log, there will be an entry like "Invalid method in request". and in the access log, there will be two requests: one for the POST, and another that starts with all "----" and produces a 501.


web att lapas dott id dott lv

16 years ago


1. And what about multiple file upload ? - If there is an UPLOAD_ERR_INI_SIZE error with multiple files - we can`t detect it normaly ? ...because that we have an array, but this error returns null and can`t use foreach. So, by having a multiple upload, we can`t normaly inform user about that.. we can just detect, that sizeof($_FILES["file"]["error"]) == 0 , but we can`t actualy return an error code. The max_file_size also is not an exit, becouse it refers on each file seperatly, but upload_max_filesize directive in php.ini refers to all files together. So, for example, if upload_max_filesize=8Mb , max_file_size = 7Mb and one of my files is 6.5Mb and other is 5Mb, it exeeds the upload_max_filesize - cant return an error, becouse we don`t know where to get that error.
Unfortunately we cannot get the file sizes on client side, even AJAX normaly can`t do that.

2. If in file field we paste something, like, D:whatever , then there also isn`t an error to return in spite of that no such file at all.


info at foto50 dot com

15 years ago


For those reading this manual in german (and/or probably some other languages) and you miss error numbers listed here, have a look to the english version of this page ;)

Tom

8 years ago


As it is common to use move_uploaded_file with file uploads, how to get it's error messages should be noted here (especially since it's not noted anywhere else in the manual).
Common code is to do something like:
if (move_uploaded_file($_FILES["file1"]["tmp_name"], $target_file)) {
      echo "<P>FILE UPLOADED TO: $target_file</P>";
   } else {
      echo "<P>MOVE UPLOADED FILE FAILED!!</P>";
      print_r(error_get_last());
   }

Spectrum

Guest


  • #1

Коды ошибок $_FILES

В упор не могу найти, где расшифровываются(объясняются) Коды ошибок
error при print_r($_FILES)
Спасибо.

Макс

Старожил PHPClub


Spectrum

Guest


  • #3

Спасибо Maxim Matyukhin

как может получаться
Array
(
[name] =>
[type] =>
[tmp_name] =>
[error] => 4
[size] => 0
)

а вот

if (isset($_FILES[‘userfile’]))
{
echo «Картинка есть»;
}
else
{
echo «Картинки нет»;
}

выводит картинка есть, или тут empty надо юзать?? Так с ней то же что то не то…..

if (empty($_FILES[‘userfile’]))
{
echo «Картинки нет»;
}
else
{
echo «Картинка есть»;
}

картинка есть как так?Вразумите:)
Спасибо.Maxim Matyukhin
Maxim Matyukhin

  • #4

Spectrum, мануал посмотри внимательно, как там это делается. И потом, что мешало проверять

PHP:

if ($_FILES['userfile']['error'])echo 'error';
else echo 'ok';

Массив то $_FILES[‘userfile’] у тебя по факту POST’а будет определён независимо от загруженности картинки.
PS: и ещё — обманывать нехорошо — судя по всему, ты привёл результат print_r($_FILES[‘userfile’]), а не print_r($_FILES)

Spectrum

Guest


  • #5

спасибо .
P.S. обмана нет просто вытащмл массив из phpinfo(32)

Спасибо разобрался проверять по [‘size’] надо было.
Спасибо всем.

Макс

Старожил PHPClub


  • #6

http://detail.phpclub.net/article/upload

PS
ты неверно понимаешь как работают функции [m]isset[/m] или [m]empty[/m]

Цитата из http://php.net/empty

empty() returns FALSE if var has a non-empty and non-zero value. In otherwords, «», 0, «0», NULL, FALSE, array(), var $var;, and objects with empty properties, are all considered empty. TRUE is returned if var is empty.

Ошибка NTFS File System в Windows — это не что иное, как ошибка чтения файла ntfs.sys, следствием чего является известный многим «Синий экран смерти». В любой Винде наличие такой ошибки означает следующее — присутствие проблемы в жестком диске или твердотельном накопителе. Очень редко эта ошибка появляется из-за программного сбоя после установки какой-то программы, и еще реже такая ошибка может означать физическую неисправность вашего компьютера. В зависимости от причины возникновения ошибки определяется возможность или невозможность ремонта или его тяжесть.

Почему возникает код ошибки NTFS File System?

Примерно в 67% случаев проблемы с файлом ntfs.sys проявляются после того, как был установлен новый накопитель, на котором уже установлена какая-то операционная система. Если у вас похожая ситуация, тогда это решить довольно просто — нужно всего лишь отдельно обновить и установить специальный драйвер для установленного нового накопителя.

Однако довольно часто ntfs file system ошибка в Windows, которая также обозначается кодом 0х0000024, возникает и по другим причинам. Самые распространенные из них мы перечислим:

  • поврежденный жесткий диск компьютера или как минимум есть поврежденные битые сектора;
  • отсутствует или чаще поврежден драйвер SCSI и/или IDE;
  • нет свободной памяти в объеме жесткого диска, что нарушает нормальную работу операционной системы установленных программ;
  • неправильно прошита материнская плата;
  • последствия зараженного вирусами компьютера;
  • повреждения разъемов у материнской платы;
  • и множество других проблем.

Как исправляется ошибка NTFS File System?

Хочется предупредить сразу, иногда исправить «синий экран» может не получиться. Потому что проблема может быть «аппаратной», то есть механическая поломка «под коробкой». А это значит, что придется нести ваш ПК в ремонт.

Однако это случается довольно редко, поэтому имеет смысл сначала попробовать предложенные методы решения. Возможно, у вас код ошибки ntfs file system возник по «простой» причине, и исправить ее удастся самостоятельно. Например, если это из-за программного сбоя, системной ошибки или просто потому, что отсутствует необходимый драйвер.

Условно методы исправления ситуации можно поделить на 2 вида:

  1. Когда ПК включается, и Windows удается загрузиться до «Рабочего стола»;
  2. Когда операционная система не запускается.

В зависимости, какой случай у вас, выбирайте нужное решение. В любом случае решить вашу проблему можно будет попробовать при помощи стандартной системной утилиты — Check Disk. Данная утилита уже встроена в вашу ОС Windows, поэтому что-то дополнительно скачивать будет ненужно. Однако доступ к ней возможен только через встроенную системную консоль. Вот к ней мы и будем «прорываться».

Ошибка NTFS File System появилась, но доступ к системе есть

Если у вас загрузилась «операционка» и вы видите «Рабочий стол», но при этом у вас возникла ошибка ntfs file system, то считайте себя в числе людей, которым неплохо повезло. Потому что это случается нечасто, и чтобы решить вашу проблему, нужно будет не так много манипуляций. Итак:

  1. Откройте меню «Пуск» в левом нижнем углу (если у вас стандартное расположение рабочей панели);
  2. Найдите в представленном меню графу «Командная строка» (обязательно с правами администратора, если у вас несколько пользователей);
  3. Нужно вписать в консоль следующую команду: chkdsk/f/r. Впишите и нажмите «Enter»;
  4. Начнется довольно долгая процедура. Дождитесь, пока закончится, и отправляйте компьютер на перезагрузку.

Нет доступа к системе, Windows не загружается, а код ошибки ntfs file system есть

С одной стороны, не печальтесь, что так получилось, — вас таких большинство. Тут можно найти себе подругу на вечер индивидуалки Омска Не забудь про это вечером Но с другой стороны, вам нужно будет немного постараться. В данном случае будет несколько больше манипуляций, чтобы решить проблему:

  1. Нужно создать загрузочный носитель с вашей системой Windows 7, 8, 10. Подойдет как USB, так и CD-диск. Тут на ваше усмотрение.
  2. Теперь нужно загрузиться с установочного носителя, который вы сделали, и дойти, пока не появится окно с кнопкой «Установить».
  3. Нам ненужно устанавливать. Там же чуть ниже будет кнопка «Восстановление системы». Нажмите не нее.
  4. Перед вами откроется несколько разделов. Нас интересует раздел «Поиск и устранение неисправностей». Выбирайте его.
  5. Там вам нужно будет найти «Дополнительные параметры». Кликайте.
  6. Теперь найдите кнопку «Командная строка». Нажмите на нее.
  7. Откроется консоль, вам нужно будет ввести все ту же команду: chkdsk/f/r. Введите и нажмите «Enter».
  8. Отправьте компьютер на перезагрузку и дождитесь, пока закончится проверка жесткого диска вашего компьютера.

В большинстве случаев программа Check Disk решает ошибку ntfs file system, и «синий экран смерти» после ее использования пропадает. Но «в большинстве случаев» это не всегда. Бывает, что данные манипуляции вам не помогают. Тогда можно попробовать следующие шаги, чтобы исправить ситуацию:

  1. Попробуйте войти в «Восстановление системы» и восстановиться при перезагрузке, используя точку восстановления или загрузочный носитель.
  2. Если до сих пор ничего не помогло, тогда переустановите Windows.

Если после переустановки ваша ошибка ntfs file system в Windows не исчезла, тогда вам нужно обратиться в специализированный ремонтный сервис.

Расшифровка 55 состояний прикладного протокола HTTP (протокол передачи гипертекста): от информационных сообщений до ошибок.

Во время запроса информации с удаленного веб-сервера может возникнуть ошибка. Тогда веб-сервер посылает в ответ код ошибки HTTP. Например 404 — Not Found (ресурс не найден).

Коды состояния HTTP состоят из трех цифр от 100 и до 510. Они делятся на следующие группы:

  1. Информационные (100-105).
  2. Успешные (200-226).
  3. Перенаправление (300-307).
  4. Ошибка клиента (400-499).
  5. Ошибка сервера (500-510).

Чтобы получить сведения об ошибке, введите её код в поле поиска по странице. Для этого нажмите сочетание клавиш CTRL + F и укажите номер.

100

Continue
Cервер удовлетворён начальными сведениями о запросе, клиент может продолжать пересылать заголовки. Появился в HTTP/1.1.

101

Switching Protocols
Сервер предлагает перейти на более подходящий для указанного ресурса протокол; список предлагаемых протоколов сервер обязательно указывает в поле заголовкаUpdate. Если клиента это заинтересует, то он посылает новый запрос с указанием другого протокола. Появился в HTTP/1.1.

102

Processing
Запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме. Появился в WebDAV.

200

ОК
Успешный запрос. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения. Появился в HTTP/1.0.

201

Created
В результате успешного выполнения запроса был создан новый ресурс. Сервер должен указать его местоположение в заголовке Location. Серверу рекомендуется[источник не указан 336 дней] ещё указывать в заголовке характеристики созданного ресурса (например, в поле Content-Type). Если сервер не уверен, что ресурс действительно будет существовать к моменту получения данного сообщения клиентом, то лучше использовать ответ с кодом 202. Появился в HTTP/1.0.

202

Accepted
Запрос был принят на обработку, но она не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс. Появился в HTTP/1.0.

203

Non-Authoritative Information
Аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. Появился в HTTP/1.1.

204

No Content
Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные. Появился в HTTP/1.0.

205

Reset Content
Сервер обязывает клиента сбросить введённые пользователем данные. Тела сообщения сервер при этом не передаёт и документ обновлять не обязательно. Появился в HTTP/1.1.

206

Partial Content
Сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. Появился в HTTP/1.1. (подробнее…)

207

Multi-Status
Сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности. Появился в WebDAV.

226

IM Used
Заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров. Введено в RFC 3229 для дополнения протокола HTTP поддержкой дельта-кодирования.

300

Multiple Choices
По указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю. Появился в HTTP/1.0.

301

Moved Permanently
Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Некоторые клиенты некорректно ведут себя при обработке данного кода. Появился в HTTP/1.0.

302

Found, Moved Temporarily
Запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, приуправляемом сервером согласовании содержимого. Некоторые клиенты некорректно ведут себя при обработке данного кода. Введено в HTTP/1.0.

303

See Other
Документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. Этот код был введён вместе с 307-ым для избежания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен методом GET. Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска. После ввода данных браузер делает запрос методом POST, включая в тело сообщения введённый текст. Если обнаружен документ с введённым названием, то сервер отвечает кодом 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит методом GET для получения содержимого. В противном случае сервер просто вернёт клиенту страницу с результатами поиска. Введено в HTTP/1.1.

304

Not Modified
Сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела. Появился в HTTP/1.0.

305

Use Proxy
Запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси). Введено в HTTP/1.1.

306

(зарезервировано)
использовавшийся раньше код ответа, в настоящий момент зарезервирован. Упомянут в RFC 2616 (обновление HTTP/1.1).

307

Temporary Redirect
Запрашиваемый ресурс на короткое время доступен по другому URI, указанный в поле Location заголовка. Этот код был введён вместе с 303 вместо 302-го для избежания неоднозначности. Введено в RFC 2616 (обновление HTTP/1.1).

400

Bad Request
Сервер обнаружил в запросе клиента синтаксическую ошибку. Появился в HTTP/1.0.

401

Unauthorized
Для доступа к запрашиваемому ресурсу требуется аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Клиент может повторить запрос, включив в заголовок сообщения поле Authorization с требуемыми для аутентификации данными.

402

Payment Required
Предполагается использовать в будущем. В настоящий момент не используется. Этот код предусмотрен для платных пользовательских сервисов, а не для хостинговыхкомпаний. Имеется в виду, что эта ошибка не будет выдана хостинговым провайдером в случае просроченной оплаты его услуг. Зарезервирован, начиная с HTTP/1.1.

403

Forbidden
Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернёт ответ 401 или 407 при использовании прокси. В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого программного обеспечения. В любом случае клиенту следует сообщить причины отказа в обработке запроса. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов, требование аутентификации не средствами HTTP, например, для доступа к системе управления содержимым или разделу для зарегистрированных пользователей либо сервер не удовлетворён IP-адресом клиента, например, при блокировках. Появился в HTTP/1.0.

404

Not Found
Самая распространенная ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы. Появился в HTTP/1.0.

405

Method Not Allowed
Указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу, если же указанный метод не применим на всём сервере, то клиенту нужно вернуть код 501 (Not Implemented). Появился в HTTP/1.1.

406

Not Acceptable
Запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD, то сервер должен вернуть список допустимых характеристик для данного ресурса. Появился в HTTP/1.1.

407

Proxy Authentication Required
Ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере. Появился в HTTP/1.1.

408

Request Timeout
Время ожидания сервером передачи от клиента истекло. Клиент может повторить аналогичный предыдущему запрос в любое время. Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT. В какой-то момент передачи источник данных перестал отвечать, например, из-за повреждения компакт-диска или потеря связи с другим компьютером в локальной сети. Пока клиент ничего не передаёт, ожидая от него ответа, соединение с сервером держится. Через некоторое время сервер может закрыть соединение со своей стороны, чтобы дать возможность другим клиентам сделать запрос. Этот ответ не возвращается, когда клиент принудительно остановил передачу по команде пользователя или соединение прервалось по каким-то иным причинам, так как ответ уже послать невозможно. Появился в HTTP/1.1.

409

Conflict
Запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT.Появился в HTTP/1.1.

410

Gone
Такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Серверу в этом случае неизвестно и местоположение альтернативного документа, например, копии). Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше клиенту передать код 404. Появился в HTTP/1.1.

411

Length Required
Для указанного ресурса клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI. Такой ответ естественен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём. Тогда разумней будет проверить в самом начале заголовок Content-Length и сразу отказать в загрузке, чем провоцировать бессмысленную нагрузку, разрывая соединение, когда клиент действительно пришлёт слишком объёмное сообщение. Появился в HTTP/1.1.

412

Precondition Failed
Возвращается, если ни одно из условных полей заголовка[неизвестный термин] запроса не было выполнено. Появился в HTTP/1.1.

413

Request Entity Too Large
Возвращается в случае, если сервер отказывается обработать запрос по причине слишком большого размера тела запроса. Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса. Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос. Появился в HTTP/1.1.

414

Request-URL Too Long
Сервер не может обработать запрос из-за слишком длинного указанного URL. Такую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET, а не POST. Появился в HTTP/1.1.

415

Unsupported Media Type
По каким-то причинам сервер отказывается работать с указанным типом данных при данном методе. Появился в HTTP/1.1.

416

Requested Range Not Satisfiabl
В поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. Если клиент передал байтовый диапазон, то сервер может вернуть реальный размер в поле Content-Range заголовка. Данный ответ не следует использовать при передаче типа multipart/byteranges[источник не указан 336 дней]. Введено в RFC 2616 (обновление HTTP/1.1).

417

Expectation Failed
По каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса. Введено в RFC 2616 (обновление HTTP/1.1).

422

Unprocessable Entity
Сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом. Введено в WebDAV.

423

Locked
Целевой ресурс из запроса заблокирован от применения к нему указанного метода. Введено в WebDAV.

424

Failed Dependency
Реализация текущего запроса может зависеть от успешности выполнения другой операции. Если она не выполнена и из-за этого нельзя выполнить текущий запрос, то сервер вернёт этот код. Введено в WebDAV.

425

Unordered Collection —
Посылается, если клиент послал запрос, обозначив положение в неотсортированной коллекции или используя порядок следования элементов, отличный от серверного[уточнить]. Введено в черновике по WebDAV Advanced Collections Protocol[14].

426

Upgrade Required
Сервер указывает клиенту на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection. Введено вRFC 2817 для возможности перехода к TLS посредством HTTP.

449

Retry With
Возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request. Введено корпорацией Microsoft для WebDAV. В настоящий момент как минимум используется программой Microsoft Money.

456

Unrecoverable Error
Возвращается сервером, если обработка запроса вызывает некорректируемые сбои в таблицах баз данных[источник не указан 336 дней]. Введено корпорацией Microsoftдля WebDAV.

500

Internal Server Error
Любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса. Появился в HTTP/1.0.

501

Not Implemented
Сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405. Появился в HTTP/1.0.

502

Bad Gateway
Сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера. Появился в HTTP/1.0.

503

Service Unavailable
Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным кажется сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов. Появился в HTTP/1.0.

504

Gateway Timeout
Сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса. Появился в HTTP/1.1.

505

HTTP Version Not Supported
Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP. Появился в HTTP/1.1.

506

Variant Also Negotiates
В результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается. Экспериментальное. Введено в RFC 2295 для дополнения протокола HTTP технологией Transparent Content Negotiation.

507

Insufficient Storage
Не хватает места для выполнения текущего запроса. Проблема может быть временной. Введено в WebDAV.

509

Bandwidth Limit Exceeded
Используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем «bw/limited», входящим в панель управления хостингом cPanel, где и был введён.

510

Not Extended
На сервере отсутствует расширение, которое желает использовать клиент. Сервер может дополнительно передать информацию о доступных ему расширениях. Введено в RFC 2774 для дополнения протокола HTTP поддержкой расширений.

PHP возвращает код ошибки наряду с другими
атрибутами принятого файла. Он расположен в массиве, создаваемом PHP
при загрузке файла, и может быть получен при обращении по ключу
error. Говоря другими словами, код ошибки можно
найти в переменной $_FILES[‘userfile’][‘error’].

UPLOAD_ERR_OK

Значение: 0; Ошибок не возникло, файл был успешно загружен на сервер.

UPLOAD_ERR_INI_SIZE

Значение: 1; Размер принятого файла превысил максимально допустимый
размер, который задан директивой upload_max_filesize
конфигурационного файла php.ini.

UPLOAD_ERR_FORM_SIZE

Значение: 2; Размер загружаемого файла превысил значение MAX_FILE_SIZE,
указанное в HTML-форме.

UPLOAD_ERR_PARTIAL

Значение: 3; Загружаемый файл был получен только частично.

UPLOAD_ERR_NO_FILE

Значение: 4; Файл не был загружен.

UPLOAD_ERR_NO_TMP_DIR

Значение: 6; Отсутствует временная папка. Добавлено в PHP 5.0.3.

UPLOAD_ERR_CANT_WRITE

Значение: 7; Не удалось записать файл на диск. Добавлено в PHP 5.1.0.

UPLOAD_ERR_EXTENSION

Значение: 8; PHP-расширение остановило загрузку файла. PHP не
предоставляет способа определить какое расширение остановило
загрузку файла; в этом может помочь просмотр списка загруженных
расширений из phpinfo(). Добавлено в PHP 5.2.0.

Вернуться к: Загрузка файлов на сервер

Понравилась статья? Поделить с друзьями:
  • Filedb dll ошибка 1с
  • Filecoauth exe системная ошибка 0xc0000005
  • Filecoauth exe ошибка приложения как устранить windows 10
  • File string python ошибка
  • File stdin line 1 in module python ошибка