ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Сообщения об ошибках.

Сообщения об ошибках.

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 5 марта 2008 г. 9:44

    [size=14pt]Общие ошибки[/size]
    т.е. не относящиеся к конкретным библиотекам функций или классам


    [tt]Notice: Undefined variable: [имя переменной] in …[/tt]
    Использование необъявленной переменной. Т.е. любой переменной перед использованием должно быть присвоено значение. Проверить существование переменной можно функцией isset.

    [tt]Notice: Use of undefined constant [имя константы] - assumed '[имя константы]' …[/tt]
    Использование неизвестной константы. Возможно, какая-то строка не заключена в кавычки, из-за чего php интерпретировал её как константу.

    [tt]Notice: Undefined index: [ключ элемента] in …[/tt]
    В массиве нет элемента с указанным ключом.

    [tt]Notice: Undefined offset: [номер элемента] in …[/tt]
    В массиве нет элемента с указанным индексом (номером).

    [tt]Notice: Only variable references should be returned by reference in …[/tt]
    "Начиная с PHP 4.4.0 и PHP 5.1.0, если код пытается вернуть по ссылке динамическое выражение или результат оператора new, будет выброжено предупреждение E_NOTICE" © php.net

    [tt]Warning: [имя функции] [function.[имя функции]]: Too few arguments in …[/tt]
    Недостаточно аргументов для функции с переменным числом аргументов. Например, printf()

    [tt]Warning: Cannot use a scalar value as an array in …[/tt]
    Возникает, когда переменной сначала было присвоено скалярное значение (число, строка), а потом к ней обратились как к массиву. Пример короче:[tt]$a = 1; $a[] = 1;[/tt] Нужно сначала явно присвоить переменной массив: [tt]$a = array()[/tt]

    [tt]Warning: Invalid argument supplied for foreach() in …[/tt]
    Переданный для перебора аргумент не является ни массивом, ни объектом.

    [tt]Fatal error: Call to undefined function [имя функции] in …[/tt]
    Вызов неизвестной функции. Возможно неподключена необходимая библиотека, возможно просто ошиблись в названии.

    [tt]Fatal error: Unsupported operand types[/tt]
    Тип данных не поддерживает данной операции. Проверьте, не попытались ли вы поделить число на массив или сделать какую-нибудь другую глупость :)

    [tt]Fatal error: Non-static method [класс]::[метод] cannot be called statically[/tt]
    Попытка вызвать не-статический метод как статический.

    [tt]Fatal error: Non-abstract method [класс]::[метод] must contain body[/tt]
    Все методы кроме абстрактных должны иметь тело.

    [tt]Fatal error: Call to private (protected) [класс]::[метод] from invalid context[/tt]
    Попытка вызвать private (protected) метод из области видимости, в которой он недоступен.
    См. руководство: Область видимости

    [tt]Fatal error: Cannot access protected property [класс]::$[атрибут][/tt]
    см. выше

    [tt]Fatal error: Constructor A::__construct() cannot be static[/tt]
    Конструктор не может быть статическим. Ну ни как :)

    [tt]Fatal error: Cannot re-assign $this in …[/tt]
    Переменная $this зарезервирована для ссылки объекта на самого себя.

    [tt]Fatal error: Using $this when not in object context in …[/tt]
    Использование $this вне объета невозможно

    [tt]Fatal error: Call to a member function [имя функции] on a non-object in …[/tt]
    Переменная которая по идее должна содержать ссылку на объект, видимо содержит что-то другое, поэтому вызвать метод объекта невозможно.

    [tt]Fatal error: Cannot access empty property in …[/tt]
    Невозможно получить доступ к пустому атрибуту объекта. Бывает, к примеру, если случайно обратиться к $object->$value вместо $object->value.

    [tt]Fatal error: Access to undeclared static property: [класс]::[$атрибут] in …[/tt]
    Попытка обращения к необъявленному статическому свойству (атрибуту) класса

    [tt]Fatal error: Undefined class constant [константа] in …[/tt]
    Попытка обращения к неизвестной константе класса

    [tt]Fatal error: Cannot redeclare [имя функции] (previously declared in [/путь/к/файлу:№строки]) in …[/tt]
    Невозможно переопределить однажды объявленную функцию. Т.е. функция с таким именем уже существует. Если это пользовательская функция, указывается путь к файлу, где она была впервые описана. Такая ошибка может возникнуть при использовании include (но не include_once) - если файл с функцией случайно подключить дважды.

    [tt]Fatal error: Uncaught exception '[имя класса-исключения]' with message '[текст сообщения]' in [источник исключения] Stack trace: [стек вызовов функций][/tt]
    неперехваченное исключение. Подробнее: Обработка исключений в php


    [size=14pt]СУБД MySQL[/size]

    [tt]Warning: mysql_connect() [function.mysql-connect]: Access denied for user [пользователь]@[хост] (using password: [есть_ли_пароль]) in …[/tt]
    Не удалось подключиться к MySQL. Проверяйте параметры подключения.

    [tt]Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in …[/tt]
    причина таже - отсутствие подключение к БД

    [tt]Warning: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in …[/tt]
    Аргумент функции не является корректным результатом запроса. Видимо в запросе ошибка. Аналогично для mysql_fetch_assoc(), mysql_fetch_row(), mysql_num_rows() и др.

    [tt]Warning: mysql_result(): Unable to jump to row [номер строки результата] …[/tt]
    Невозможно перейти к указанной строке в результах запроса.


    [size=14pt]Файловая система[/size]

    [tt]Warning: fopen([имя_файла]) [function.fopen]: failed to open stream: No such file or directory in …[/tt]
    Не найден файл или директория. Аналогично для функций file(), file_get_contents(), readfile(), move_uploaded_file(), etc …

    [tt]Warning: fopen([имя_файла]) [function.fopen]: failed to open stream: Permission denied in …[/tt]
    Нет прав доступа на требуемый файл.

    [tt]Warning: fgets(): supplied argument is not a valid stream resource in …[/tt]
    Аргумент функции не является корректным потоком. Видило, при открытии файла произошла ошибка. Аналогично для функций fread(), feof(), fclose() и др.

    [tt]Warning: [имя функции] [function.[имя функции]]: open_basedir restriction in effect. File([путь/к/файлу]) is not within the allowed path(s): ([разрешенные/директории]) in[/tt]
    Означает что указанный файл (директория) не входит в дерево директорий разрешенных опцией open_basedir (http://ru2.php.net/manual/ru/features.safe-mode.php).

    [tt]Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '[откуда]' to '[куда]' in …[/tt]
    Невозможно переместить файл. Проверьте аргументы функции.

    [tt]Fatal error: require_once() [function.require]: Failed opening required ['имя подключаемого файла'] …[/tt]
    require (require_once), в отличие от include (include_once) в случае неудачного подключения файла вызывает фатальную ошибку


    [size=14pt]Библиотека GD[/size]

    [tt]Warning: imagecopyresized(): supplied argument is not a valid Image resource …[/tt]
    Первый аргумент функции не является корректным ресурсом изображения GD. Видимо произошла ошибка при создании изображения (imageCreate, imageCreateTrueColor) или при открытии изображения из файла (imageCreateFromJpeg, -Gif, -Png)

    [tt]Warning: imagejpeg() [function.imagejpeg]: Unable to open 'test.jpg' for writing in …[/tt]
    Не удалось найти файл, указанный для сохранения изображения

    [tt]Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in[/tt]
    Некорректно указаны размеры изображения


    [size=14pt]Заголовки[/size]

    [tt]Warning: Cannot add header information - headers already sent by (output started at [/путь/к/файлу.php:№строки]) in …[/tt]
    скорее всего вызвали функцию header(), session_start() или setcookie() после echo…
    [/путь/к/файлу.php:№строки] - место, где "начался" вывод (т.е. первый вызов функций print, echo, etc.)


    [size=14pt]Разбор кода[/size]

    [tt]Parse error: syntax error, unexpected [токен] in …[/tt]
    Все ошибки, обнаруживаемые при разборе кода описать наверное невозможно, т.к. наворотить в коде можно что угодно… Всё же чаще всего - parse-ошибка означает что где-то забыта или поставлена лишняя скобка, кавычка, запятая, точка и т.п.
    В сообщении парсер обозначает "токен" (token), с которым возможно связана ошибка - это те самые T_STRING, T_IF, T_VARIABLE и т.д. Со списком токенов можно ознакомится в официальном руководстве. Так же, вместо токена может стоять {, [ или другая языковая конструкция, из-за отсутсвия (или наличия) которой возможно возникла ошибка.


    [size=14pt]Несортированное[/size]

    [tt]Warning: strpos() [function.strpos]: Offset not contained in string. in …[/tt]
    Отступ (третий аргумент функции) больше, чем длинна самой строки

    [tt]Fatal error: Maximum execution time of 30 seconds exceeded in …[/tt]
    Превышено максимальное время выполнения php-сценария (max_execution_time - http://ru2.php.net/manual/ru/ref.info.php)
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 5 марта 2008 г. 12:10, спустя 2 часа 25 минут 19 секунд

    Спасибо за статью. Как раз давно такой не хватало, будет куда половину новичков посылать :)
    Впрочем, те, кто тупо постят ошибку и кричат "ПАМАГИТЕ ХЕЛП МИ", все равно будут кричать, что ничего не понятно и просить чтобы им код правили.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 6 марта 2008 г. 4:55, спустя 16 часов 45 минут 49 секунд

    Спасибо Тимур, тоже буду ссылки давать на эту статью :)
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 18 марта 2008 г. 5:25, спустя 11 дней 23 часа 29 минут

    не освещен раздел ошибок работы с объектами
    ну например ошибки которые вылазят при наборе чего то типа

    static function __constructor(){} // статичный кончтруктор
    Class::__constructor(); // статичный вызов нестатичного метода
    $class->privateMethod(); // вызов приватного метода

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 13 мая 2008 г. 13:27, спустя 56 дней 8 часов 2 минуты

    спасибо, добавил
  • megabit

    Сообщения: 367 Репутация: N Группа: Кто попало

    Spritz 15 мая 2008 г. 19:40, спустя 2 дня 6 часов 13 минут

    а можно еще про ошибки 404, 502 …. нужно описание =)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 15 мая 2008 г. 21:38, спустя 1 час 57 минут 37 секунд

    megabit, http://www.nbuv.gov.ua/libdoc/codes.htm
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 15 мая 2008 г. 22:42, спустя 1 час 4 минуты 35 секунд

    а можно еще про ошибки 404, 502 …. нужно описание =)

    эти ошибки к php не относятся :)
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 17 мая 2008 г. 9:44, спустя 1 день 11 часов 2 минуты

    Дополню =) Сегодня столкнулся с новой для себя ошибкой =)
    Indirect modification of overloaded property [class]::$[property] has no effect
    Почему возникает нашел здесь.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 30 августа 2008 г. 15:09, спустя 105 дней 5 часов 25 минут

    Fatal error: Access to undeclared static property
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 30 августа 2008 г. 23:06, спустя 7 часов 56 минут 31 секунду

    спс, добавил
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 31 августа 2008 г. 1:45, спустя 2 часа 39 минут 14 секунд

    function & factory(){
       return new stdClass();
    }

    $x = factory();

    раньше почемуто выдавало
    Assigning the return value of new by reference is deprecated in…

    а щас выдает
    Only variable references should be returned by reference in…


    ЗЫ 800
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 31 августа 2008 г. 3:15, спустя 1 час 30 минут 7 секунд

    ok, добавил
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 31 августа 2008 г. 3:29, спустя 14 минут 21 секунду

    Timur. дело не в то что НАДО добавит а в том ЧТО надо добавить
    раньше это был ерор а щас нотис

Пожалуйста, авторизуйтесь, чтобы написать комментарий!