Форум → Программирование → Пыхнуть хотите? → F.A.Q. → Сообщения об ошибках.
Сообщения об ошибках.
-
[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) -
5 марта 2008 г. 23:10, спустя 2 часа 25 минут 19 секунд
Спасибо за статью. Как раз давно такой не хватало, будет куда половину новичков посылать :)
Впрочем, те, кто тупо постят ошибку и кричат "ПАМАГИТЕ ХЕЛП МИ", все равно будут кричать, что ничего не понятно и просить чтобы им код правили. -
6 марта 2008 г. 15:55, спустя 16 часов 45 минут 49 секунд
Спасибо Тимур, тоже буду ссылки давать на эту статью :)https://smappi.org/ - платформа по созданию API на все случаи жизни -
18 марта 2008 г. 15:25, спустя 11 дней 23 часа 29 минут
не освещен раздел ошибок работы с объектами
ну например ошибки которые вылазят при наборе чего то типаstatic function __constructor(){} // статичный кончтруктор
Class::__constructor(); // статичный вызов нестатичного метода
$class->privateMethod(); // вызов приватного метода -
-
16 мая 2008 г. 6:40, спустя 2 дня 6 часов 13 минут
а можно еще про ошибки 404, 502 …. нужно описание =) -
16 мая 2008 г. 8:38, спустя 1 час 57 минут 37 секунд
https://smappi.org/ - платформа по созданию API на все случаи жизни -
16 мая 2008 г. 9:42, спустя 1 час 4 минуты 35 секунд
а можно еще про ошибки 404, 502 …. нужно описание =)
эти ошибки к php не относятся :) -
17 мая 2008 г. 20:44, спустя 1 день 11 часов 2 минуты
Дополню =) Сегодня столкнулся с новой для себя ошибкой =)
Indirect modification of overloaded property [class]::$[property] has no effect
Почему возникает нашел здесь. -
31 августа 2008 г. 2:09, спустя 105 дней 5 часов 25 минут
Fatal error: Access to undeclared static property
https://smappi.org/ - платформа по созданию API на все случаи жизни -
-
31 августа 2008 г. 12: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 -
-
31 августа 2008 г. 14:29, спустя 14 минут 21 секунду
Timur. дело не в то что НАДО добавит а в том ЧТО надо добавить
раньше это был ерор а щас нотис
Пожалуйста, авторизуйтесь, чтобы написать комментарий!