Содержание
- Troubleshooting
- Screenshot issues/Protected sites
- HTTP Basic Authentication
- Localhost
- Canvas support
- Tainted canvas
- WebGL
- Console log — «Script error.»
- Do you have any questions?
- Журнал (лог) ошибок сервера. Как посмотреть error.log в ISP-manager пользователя
- Журнал (лог) ошибок сервера
- Как открыть посмотреть журнал ошибок error.log в ISP-manager пользователя
- Просмотр лога с ошибками error.log в ISP-manager пользователя
- Выводы
- Как отображать ошибки PHP и включать отчеты об ошибках
- Как показать ошибки PHP
- Конфигурация отчетов об ошибках
- Директивы сообщения об ошибках
- Настройка логирования ошибок
- Поиск и исправление ошибок
- phpBB Guru — Официальная русская поддержка форума phpBB3
- [FAQ] error.log — описание и примеры
- [FAQ] error.log — описание и примеры
Troubleshooting
Screenshot issues/Protected sites
To render screenshots correctly, Ybug’s rendering server needs access to your site’s static assets (fonts, stylesheets and images). If your site or static assets are protected and require authentication, you may need to grant access to the Ybug servers.
HTTP Basic Authentication
If your site uses HTTP Basic Authentication, you can pass your credentials in the ybug_settings object (it is recommended to create special credentials just for Ybug):
We store these credentials encrypted and delete them as soon as your screenshot is rendered.
Localhost
Ybug can render screenshots of sites hosted locally, however there may be some issues with missing images/fonts etc. Our rendering engine must have access to your site’s static resources (fonts + css + images) to render site screenshots properly.
You may also try our browser extensions, which take pixel perfect screenshots even on localhost. Or expose your local web server via a localhost tunneling service like PageKite or Ngrok.
Canvas support
Ybug’s rendering engine supports canvases in its screenshots. However not every canvas gets rendered.
Tainted canvas
If you draw cross-origin image onto your canvas, it gets tainted and browser will not allow Ybug to capture this cross-origin content. More details on tainted canvas.
WebGL
In order to allow capture of your WebGL app, please set preserveDrawingBuffer to true when creating your WebGL context.
You may try our browser extensions, which take pixel perfect screenshots with tainted and WebGL canvases.
Console log — «Script error.»
If you see «Script error.» in your Ybug’s console log, it means that the error originates from a Javascript file from a different origin (domain, scheme, or port). This is also known as a CORS error.
In order to fix the CORS errors, you need to do two things:
1. Add a crossorigin script attribute to tell the browser it is safe to load the script with CORS enabled:
2. Configure your web server to send the CORS header:
After applying these changes, Ybug should be able to capture errors that happen in your script even it is hosted on a different domain.
If it is not possible for you to set the CORS attributes or headers, you can alternatively use our Custom error logging Javascript API to log any errors from your script:
Do you have any questions?
Contact us in case you have any questions or feedback.
We will be happy to help.
Made in the of Europe.
This website uses cookies to ensure you get the best experience on our website. Learn more
Источник
Журнал (лог) ошибок сервера. Как посмотреть error.log в ISP-manager пользователя
Словом «сервер» называют железку, подключенную к двум розеткам: питание и выход в сеть. То есть компьютер. Но важна не только железяка (с самым быстрым процессором, безграничной памятью и безразмерным шустрым жёстким диском). Важна ещё программа, которая управляет этой железкой. И эта программа тоже называется «сервер». Так сложилось исторически, но важно понимать, что имеется ввиду под этим словом. Обычно пользователи интернета, которые по каким-то причинам обзавелись своим сайтом, хотят самый быстрый сервер, чтобы он мгновенно отдавал пользователю тот контент, который запрашивается. Скорость работы сервера зависит как от железа, так и от того, как работают программы на этой железяке. И тут пользователи начинают измерять скорость и иначе насиловать свой сервер, запуская всякие программы, которые шлют запросы, получают ответы и на основе этого выдают какие-то рекомендации. Всё хорошо, кроме одного: все эти программы не учитывают (так как не могут ничего, кроме как обрушить шквал запросов) того, что же в это время происходит на самом сервере.
Журнал (лог) ошибок сервера
Кроме всего прочего, все внешние программы вносят значительные ошибки в статистику, на основании которой строится стратегия, что делать с сайтом дальше. Если конечно есть хоть какая-то стратегия развития. =)
Есть ли альтернатива насилию над сервером для того, чтобы понять как он работает? Как не странно, есть! И она была всегда (ещё до возникновения всех этих программ, которые что-то делают, а потом выдают какие-то рекомендации). Одной из штатных задач сервера (программы) является не просто отдать пользователю то, что он запросил, но и записать результаты проделанной работы в журнал. Как правило, журналы делятся на журнал доступа (куда пишутся удачно обработанные запросы) и журнал ошибок. В журнал ошибок пишется всё то, что пошло не так (и что прописано в настройках сервера). То есть в этом журнале будут сообщения об ошибках, и, если настроено, сведения об уведомлениях о подозрительно обработанных запросах.
Именно в этом журнале и можно посмотреть, какие страницы отсутствую на сайте и откуда пришёл пользователь с этим запросом (так называемые «битые ссылки» — «Ошибка 404» и прочие ошибки уровня 400). А ещё сюда пишутся ошибки сервера, которые он вообще не смог обработать (так называемые «Ошибка 500»).
Зная про это и разобравшись с кодами ошибок можно их устранить и наладить работу сайта так, чтобы сервер работал по возможности без ошибок.
О том, как найти лог ошибок сервера в в ISP-manager пользователя и рассмотрим в этой статье.
Как открыть посмотреть журнал ошибок error.log в ISP-manager пользователя
Итак, ISP-manager, хотя и платная программа, и отжирающая на свою работу часть ресурсов сервера, она всё-таки полезна. Для того, чтобы добраться до журналов работы сервера, нужно:
- Войти в на вкладку «Журналы»,
- Выбрать из списка нужный (журналы с ошибками обозначены обычно error.log )
- Открыть выбранный журнал
Открыть нужный журнал в ISP-панели можно:
- либо двойным кликом левой кнопкой мышки по его названию,
- либо:
- выделив строчку с нужным журналом одним кликом левой кнопкой мышки
- и нажав на кнопку «Посмотреть» в верхнем ряду кнопок управления
Просмотр лога с ошибками error.log в ISP-manager пользователя
Выполнив одно из описанных выше действий, получим ещё одну вкладку в ISP-manager, в которой будет выдано выбранное количество последних строк журнала ошибок:
Выводы
Не обязательно устанавливать программы себе на компьютер или запускать какие-то другие внешние сканеры сайта, которые ничего не знают ни о сервере, ни о том, как он работает, и ничего не умеют, кроме как засыпать сервер запросами и отследить время между ответом и запросом. ну и походить по всем встреченным на сайте ссылкам. Первым делом хорошо бы найти лог ошибок сервера, посмотреть и убедиться, что сервер работает без ошибок, как собственно и сам сайт (особенно, если сайт работает под управлением какой-нибудь CMS с кучей фильтров, плагинов и на каком-нибудь хитром шаблоне, написанном для облегчения создания сайта неопытным пользователем так, чтобы всё сложное выполнял бы за пользователя сервер и браузер несчастного пользователя, который по какой-то нелепой случайности решил посмотреть на такой сайт).
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Выберите, то, чем пользуетесь чаще всего:
Источник
Как отображать ошибки PHP и включать отчеты об ошибках
Как показать ошибки PHP
Если погуглить «ошибки PHP» или «PHP errors» , то одним из первых результатов в поиске будет ссылка на документацию по функции error_reporting. Эта функция позволяет как установить уровень отчетов об ошибках PHP, так и получить текущий уровень отчетов об ошибках PHP, как определено вашей конфигурацией PHP.
Функция error_reporting принимает единственный параметр, целое число, которое указывает, какой уровень отчетности установить. Если ничего не передавать в качестве параметра, функция error_reporting просто возвращается текущий установленный уровень.
Существует длинный список возможных значений, которые можно передать в качестве параметра. Мы рассмотрим их позже.
Сейчас важно знать, что для каждого значения, которое может быть передано в качестве параметра, в PHP уже существует предопределенная константа. Так, например, константа E_ERROR имеет значение 1. Это означает, что вы можете передать 1 или E_ERROR в функцию error_reporting и получить тот же результат.
Конфигурация отчетов об ошибках
Использование функции error_reporting отлично подходит, когда необходимо просто увидеть любые ошибки, связанные с фрагментом кода, над которым вы сейчас работаете.
Но конечно было бы лучше контролировать, о каких ошибках сообщается в вашей локальной среде разработки, и регистрировать их где-нибудь, чтобы иметь возможность просматривать их позже. Это можно сделать внутри файла инициализации PHP (или php.ini).
Файл php.ini отвечает за настройку всех аспектов поведения PHP. В этом файле Вы можете установить такие вещи, как объем памяти, который следует выделить для сценариев PHP, разрешить загрузку файлов и какие уровни error_reporting вы хотите для своей среды.
Если вы не уверены или не знаете, где находится файл php.ini, один из способов узнать это — создать скрипт PHP, который использует функцию phpinfo. Эта функция выведет всю информацию, относящуюся к вашему PHP.
Как вы можете видеть из моего phpinfo, мой текущий файл php.ini находится в /etc/php/7.3/apache2/php.ini. Ваш файл может иметь другое расположение.
Найдя файл php.ini, откройте его в любом редакторе и найдите раздел «Error handling and logging». Вот тут и начинается самое интересное!
Директивы сообщения об ошибках
Первое, что вы увидите в этом разделе, — это раздел комментариев, который включает подробное описание всех констант уровня ошибки. Далее мы будем использовать эти константы, чтобы установить уровни отчетов об ошибках.
Также эти константы задокументированы в документации по PHP.
Под этим списком находится второй список значений. Здесь показано, как установить некоторые часто используемые наборы комбинаций значений отчетов об ошибках, включая значения по умолчанию, предлагаемое значение для среды разработки и предлагаемые значения для «боевого» окружения.
После всех комментариев указано текущее значение вашего уровня error_reporting. Для локальной разработки я бы предложил установить его на E_ALL, что позволит видеть все ошибки.
Обычно это одна из первых вещей, которую следует сделать при настройке новой среды разработки. Таким образом, можно увидеть все сообщения об ошибках.
После директивы error_reporting вы можете установить некоторые дополнительные директивы. Как и раньше, файл php.ini включает описания каждой директивы. Ниже приведено краткое описание самых важных из них.
- Директива display_errors позволяет вам устанавливать, выводить ли PHP ошибки или нет. Обычно у меня установлено значение «On»,что позволяет видеть ошибки по мере их возникновения.
- Директива display_startup_errors позволяет включить / выключить отображение ошибок, которые могут возникнуть во время запуска PHP. Обычно это ошибки в конфигурации PHP или веб-сервера, а не конкретно в вашем коде. Рекомендуется оставить это значение выключенным, если вы не можете устранить проблему и не уверены, что ее вызывает.
- Директива log_errors сообщает PHP, нужно ли записывать ошибки в файл журнала ошибок. По умолчанию он всегда включен и рекомендуется.
Остальные директивы можно оставить по умолчанию, за исключением, может быть, директивы error_log, которая позволяет указать, где регистрировать ошибки, если log_errors включен. По умолчанию он регистрирует ошибки там, где где указал ваш веб-сервер.
Настройка логирования ошибок
Если Вы используете в качестве веб-сервера Apache, в конфигурации виртуального хоста добавьте следующее, чтобы определить местоположение журнала ошибок.
Если же Вы используете в качестве веб-сервера nginx, тогда в конфигурационный файл вашего проекта необходимо добавить следующее:
Итак, в зависимости от вашей локальной среды разработки вам может потребоваться настроить логирование в соответствии с вашими потребностями. В качестве альтернативы, если вы не можете указать журнал логирования на уровне веб-сервера, вы можете установить его на уровне php.ini.
Стоит отметить, что в этом файле будут регистрироваться все ошибки PHP, и если вы работаете над несколькими проектами, это может быть не совсем удобно.
Поиск и исправление ошибок
Если вы недавно начали программировать на PHP и решили включить отчет об ошибках, будьте готовы к тому, что ваш код будет отображать множество сообщений. Вы можете увидеть некоторые вещи, которых не ожидали, и которые необходимо исправить.
Преимущество, однако, в том, что теперь, когда вы знаете, как включить все это на уровне сервера, вы можете быть уверены, что видите эти ошибки, видите когда они случаются, и исправляете их до того, как их увидят другие!
Как искать и исправлять ошибки? Да очень просто. В журнале ошибок как правило указан файл и строка кода, где произошла ошибка. Также в файле журнала ошибок может храниться вся цепочка вызовов, которая привела к возникновению ошибки.
Источник
phpBB Guru — Официальная русская поддержка форума phpBB3
скачать русский перевод, моды, скины и стили для phpBB, phpBB3
- Темы пользователя
- >в конференции
- >>в форуме
- Сообщения пользователя
- >в конференции
- >>в форуме
- >>>в теме
[FAQ] error.log — описание и примеры
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
[FAQ] error.log — описание и примеры
Сообщение MAzZY » 08.11.2009 13:56
Error.log является наиболее важным логом системы на базе веб сервера Apache. При возникновении практически любой ошибки на стороне сервера (с кодом 500-599) в данный файл записывается вся необходимая информацию. Может называться error_log, error.log, .errorlog и подобным образом – зависит от настроек сервера.
Формат файла достаточно произволен, но обычно имеет следующую структуру строки:
1 – дата события
2 – уроверь ошибки
3 – IP клиента, обращение которого вызвало ошибку
4 – текстовое описание и абсолютный путь до файласкрипта, вызвавшего ошибку (абсолютный путь от корня сервера DOCUMENT_ROOT системы, указанного в phpinfo)
Примеры ошибок (пополняется)
Данный файл отсутствует на сервере – наверно, самая распространенная ошибка.
Либо CHMOD установлен такой, что клиент не может получить доступ на чтение (менее 644)
Скрипт не может получить память. Однотипная ошибка — Unable to allocate nnn bytes.
По видимому, скрипт «съел» всю память и не освобождает ее
Источник
Screenshot issues/Protected sites
To render screenshots correctly, Ybug’s rendering server needs access to your site’s static assets (fonts, stylesheets and images).
If your site or static assets are protected and require authentication, you may need to grant access to the Ybug servers.
HTTP Basic Authentication
If your site uses HTTP Basic Authentication, you can pass your credentials in the ybug_settings object (it is recommended to create special credentials just for Ybug):
window.ybug_settings = {
id:'XXXXXXXXX',
auth: {
type: 'basic',
username: 'user',
password: 'pwd',
}
};
We store these credentials encrypted and delete them as soon as your screenshot is rendered.
Localhost
Ybug can render screenshots of sites hosted locally, however there may be some issues with missing images/fonts etc. Our rendering engine must have access to your site’s static resources (fonts + css + images) to render site screenshots properly.
You may also try our browser extensions, which take pixel perfect screenshots even on localhost. Or expose your local web server via a localhost tunneling service like PageKite or Ngrok.
Canvas support
Ybug’s rendering engine supports canvases in its screenshots. However not every canvas gets rendered.
Tainted canvas
If you draw cross-origin image onto your canvas, it gets tainted and browser will not allow Ybug to capture this cross-origin content. More details on tainted canvas.
WebGL
In order to allow capture of your WebGL app, please set preserveDrawingBuffer to true when creating your WebGL context.
const gl = canvas.getContext('webgl', {
preserveDrawingBuffer: true
});
You may try our browser extensions, which take pixel perfect screenshots with tainted and WebGL canvases.
Console log — «Script error.»
If you see "Script error." in your Ybug’s console log, it means that the error originates from a Javascript file from a different origin (domain, scheme, or port). This is also known as a CORS error.
In order to fix the CORS errors, you need to do two things:
1. Add a crossorigin script attribute to tell the browser it is safe to load the script with CORS enabled:
<script src="//different-domain.com/script.js" crossorigin></script>
2. Configure your web server to send the CORS header:
Access-Control-Allow-Origin: *
After applying these changes, Ybug should be able to capture errors that happen in your script even it is hosted on a different domain.
If it is not possible for you to set the CORS attributes or headers, you can alternatively use our Custom error logging Javascript API to log any errors from your script:
try {
// Some JS code ...
} catch (err) {
if (Ybug) {// Make sure Ybug is loaded
Ybug.log('error', err);
// You can also log a message
Ybug.log('log', 'An error happened...');
}
}
Do you have any questions?
Contact us in case you have any questions or feedback.
We will be happy to help.
Словом «сервер» называют железку, подключенную к двум розеткам: питание и выход в сеть. То есть компьютер. Но важна не только железяка (с самым быстрым процессором, безграничной памятью и безразмерным шустрым жёстким диском). Важна ещё программа, которая управляет этой железкой. И эта программа тоже называется «сервер». Так сложилось исторически, но важно понимать, что имеется ввиду под этим словом. Обычно пользователи интернета, которые по каким-то причинам обзавелись своим сайтом, хотят самый быстрый сервер, чтобы он мгновенно отдавал пользователю тот контент, который запрашивается. Скорость работы сервера зависит как от железа, так и от того, как работают программы на этой железяке. И тут пользователи начинают измерять скорость и иначе насиловать свой сервер, запуская всякие программы, которые шлют запросы, получают ответы и на основе этого выдают какие-то рекомендации. Всё хорошо, кроме одного: все эти программы не учитывают (так как не могут ничего, кроме как обрушить шквал запросов) того, что же в это время происходит на самом сервере.
Журнал (лог) ошибок сервера
Кроме всего прочего, все внешние программы вносят значительные ошибки в статистику, на основании которой строится стратегия, что делать с сайтом дальше. Если конечно есть хоть какая-то стратегия развития. =)
Есть ли альтернатива насилию над сервером для того, чтобы понять как он работает? Как не странно, есть! И она была всегда (ещё до возникновения всех этих программ, которые что-то делают, а потом выдают какие-то рекомендации). Одной из штатных задач сервера (программы) является не просто отдать пользователю то, что он запросил, но и записать результаты проделанной работы в журнал. Как правило, журналы делятся на журнал доступа (куда пишутся удачно обработанные запросы) и журнал ошибок. В журнал ошибок пишется всё то, что пошло не так (и что прописано в настройках сервера). То есть в этом журнале будут сообщения об ошибках, и, если настроено, сведения об уведомлениях о подозрительно обработанных запросах.
Именно в этом журнале и можно посмотреть, какие страницы отсутствую на сайте и откуда пришёл пользователь с этим запросом (так называемые «битые ссылки» — «Ошибка 404» и прочие ошибки уровня 400). А ещё сюда пишутся ошибки сервера, которые он вообще не смог обработать (так называемые «Ошибка 500»).
Зная про это и разобравшись с кодами ошибок можно их устранить и наладить работу сайта так, чтобы сервер работал по возможности без ошибок.
О том, как найти лог ошибок сервера в в ISP-manager пользователя и рассмотрим в этой статье.
Итак, ISP-manager, хотя и платная программа, и отжирающая на свою работу часть ресурсов сервера, она всё-таки полезна. Для того, чтобы добраться до журналов работы сервера, нужно:
- Войти в на вкладку «Журналы»,
- Выбрать из списка нужный (журналы с ошибками обозначены обычно
error.log) - Открыть выбранный журнал
Открыть нужный журнал в ISP-панели можно:
- либо двойным кликом левой кнопкой мышки по его названию,
- либо:
- выделив строчку с нужным журналом одним кликом левой кнопкой мышки
- и нажав на кнопку «Посмотреть» в верхнем ряду кнопок управления
Просмотр лога с ошибками error.log в ISP-manager пользователя
Выполнив одно из описанных выше действий, получим ещё одну вкладку в ISP-manager, в которой будет выдано выбранное количество последних строк журнала ошибок:
Выводы
Не обязательно устанавливать программы себе на компьютер или запускать какие-то другие внешние сканеры сайта, которые ничего не знают ни о сервере, ни о том, как он работает, и ничего не умеют, кроме как засыпать сервер запросами и отследить время между ответом и запросом… ну и походить по всем встреченным на сайте ссылкам. Первым делом хорошо бы найти лог ошибок сервера, посмотреть и убедиться, что сервер работает без ошибок, как собственно и сам сайт (особенно, если сайт работает под управлением какой-нибудь CMS с кучей фильтров, плагинов и на каком-нибудь хитром шаблоне, написанном для облегчения создания сайта неопытным пользователем так, чтобы всё сложное выполнял бы за пользователя сервер и браузер несчастного пользователя, который по какой-то нелепой случайности решил посмотреть на такой сайт).
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Выберите, то, чем пользуетесь чаще всего:
В работе системного администратора, нередко возникает необходимость посмотреть логи сервера (Server Logs), с какими задачами работал сервер в конкретное время, какие действия совершали пользователи. Причины возникновения этой необходимости могут быть разные:
- Сбой в работе сервера;
- Выявление неблагонамеренных действий;
- Анализ рабочих процессов.
Всю необходимую информацию можно получить в логи сервера (Server Logs), то есть файлах, в которые вносятся записи о различных процессах, действиях пользователей, и т.п. Но, для этого необходимо понимать, где хранятся эти данные, а главное, как с ними работать.
- 1 Что такое логи сервера?
- 2 Как правильно читать логи сервера?
- 3 Логи серверов на Windows
- 4 Логи SQL сервера
- 5 Как включить или выключить запись логов сервера?
- 6 Где находятся логи сервера?
- 7 Пример работы с логами сервера
- 8 Вывод
Что такое логи сервера?
Собственно говоря, само слово «логи сервера», является банальной транслитерацией, от словосочетания «server log», которое переводится как «журнал сервера».
Существуют следующие типы логов:
- Ошибки – записи, фиксирующие различные сбои в работе сервера, или при обращении к конкретным функциям или задачам. С их помощью можно быстро ликвидировать разные баги и сбои;
- Доступ – записи, которые фиксируют точные дату и время подключения конкретного пользователя, каким образом он попал на сайт, и т.д. Позволяют проводить аналитическую работу, а также находить уязвимые места, в тех случаях, когда ресурс пытались взломать;
- Прочее – записи с данными о работе разных компонентов сервера, например, почты.
Разумеется, если вы не наблюдаете никаких проблем, или подозрительных моментов, связанных с работой сервера, то нет никакой необходимости в частом просмотре логов. Тем не менее, специалисты рекомендуют выборочно изучать их, хотя бы раз в год.
С другой стороны, если уже произошло какое-то ЧП, например, сайт резко начал выдавать большое количество ошибок, подвергся спам-атаке, или стремительно возросла нагрузка на сервер, то изучение логов, позволит быстро понять в чем проблема и устранить её.
Тем не менее, для большинства рядовых пользователей записи в log-файлах, представляют собой просто странный набор символов. А значит, нужно понять, как правильно их читать.
Как правильно читать логи сервера?
В данном примере, мы разберем два типа записей, касающихся логов доступа и ошибок, поскольку именно к ним чаще всего обращаются, при возникновении каких-то проблем.
Итак, запись лога доступа, из файла access.log:
mysite.biz 25.34.94.132 — — [21/Nov/2017:03:21:08 +0200] «GET /blog/2/ HTTP/1.0» 200 18432 «-» «Unknow Bot (http://www.unknow.com/bot; [email protected])»
Что она обозначает:
- mysite.biz – домен сайта, которым вы интересуетесь;
- 34.94.132 – IP-адрес, который использовал пользователь при заходе на сайт;
- [21/Nov/2017:03:21:08 +0200] – дата, точное время и часовой пояс пользователя;
- GET – запрос, который отправляется для получения данных. В том случае, если пользователь передает данные, запрос будет «POST»;
- /blog/2/ — относительный адрес страницы, к которой был обращен запрос;
- HTTP/1.0 – используемый протокол;
- 200 – код ответа на запрос;
- 18432 – количество данных, переданных по запросу, в байтах;
- Unknow Bot (http://www.unknow.com/bot; [email protected]) – данные о роботе, или реальном человеке, который зашел на сайт. В том случае, если это человек, будет отображена ОС, тип устройства и т.д. В конкретном примере на сайт зашел робот-парсер, принадлежащий ресурсу unknow.com.
Таким образом, мы узнали, что с IP-адреса 25.34.94.132, двадцать первого ноября, 2017-го года, в три часа, двадцать одну минуту и восемь секунд, на наш сайт заходил бот, принадлежащий другому веб-ресурсу. Он отправил запрос на получение данных, и получил 18432 байт информации.
Теперь можно заблокировать доступ для ботов от этого сайта, либо от всех, кто пользуется этим IP, разумеется, если в этом есть необходимость.
Логи ошибок, можно посмотреть в файле с говорящим именем – error.log. Они выглядят следующим образом:
[Sat Oct 1 18:23:28.719615 2019] [:error] [pid 10706] [client 44.248.44.22:35877]
PHP Notice: Undefined variable: moduleclass_sfx in
/var/data/www/mysite.biz/modules/contacts/default.php on line 13
Что здесь написано?
- Дата, время и тип ошибки, а также IP-адрес, который использовал посетитель;
- Тип события, в данном случае – «PHP Notice» (уведомление), а также уточнение, что в данном случае, мы имеем дело с неизвестной переменной;
- Местоположение файла с уведомлением, а также строка, на которой оно находится.
Если говорить просто, то в данном случае мы имеем сообщение о том, что первого октября, в 18:23, 2019-го года, произошла ошибка, связанная с модулем контактов.
Разумеется, даже после расшифровки, полученные данные не так просто проанализировать. Именно поэтому, для удобной обработки данных из логов сервера, используется различное программное обеспечение. К таким программам относятся: Awstats, Webtrends, WebAlyzer, и многие другие.
Сегодня существует множество платных и бесплатных вариантов программ, для обработки и анализа лог-файлов.
Логи серверов на Windows
У логов серверов на Windows, изначально более удобный и структурированный вывод информации, в виде простой и понятной таблицы.
Существует несколько уровней событий:
- Подробности;
- Сведения;
- Предупреждение;
- Ошибка;
- Критический.
Также есть возможность быстрой фильтрации и сортировки записей, в зависимости от того, какие данные вы хотите получить.
Логи SQL сервера
На сегодняшний день, базы данных SQL, являются наиболее распространенным способом работы с большими объемами информации. В первую очередь, логи sql сервера, стоит изучить, если вы не уверены в том, что какие-то процессы были успешно завершены. Этими процессами могут быть:
- Резервное копирование;
- Восстановление данных;
- Массовые изменения;
- Различные скрипты, и программы для обработки данных.
Для того, чтобы просмотреть записи в логах, можно использовать SQL Server Management Studio, либо другой, удобный вам редактор текстов. Записи распределены по журналам следующих типов:
- Сбор данных;
- Database Mail;
- SQL Сервер;
- События Windows;
- Журнал заданий;
- Коллекция аудита;
- SQL Сервер, агент.
Для того, чтобы получить доступ к журналам, необходимо иметь права «securityadmin».
Как включить или выключить запись логов сервера?
Для того, чтобы осуществить эту операцию, нужно зайти в административную панель вашего хостера. Как правило, в основном меню есть раздел «Журнал», или «Логи», в котором можно включить или выключить запись данных о предоставленном доступе, ошибках, и т.п.
Где находятся логи сервера?
Расположение журналов, зависит в первую очередь от используемой вами операционной системы.
Логи серверов с CentOS, или Fedora, хранятся в дирректории «/var/log/».
Названия файлов:
- Журнал ошибок – «error.log»;
- Журнал nginx – «nginx»;
- Журнал доступов – «log»;
- Основной журнал – «syslog»;
- Журнал загрузки системы – «dmesg».
Логи ошибок, связанных с работой MySQL, находятся в директории «/var/lib/mysql/», в файле «$hostname.err».
Для операционных систем Debian и Ubuntu, логи сервера располагаются в папке «/var/log/», в файлах:
- Nginx — журнал nginx;
- /mysql/error.log – журнал ошибок для баз данных MySQL;
- Syslog – основной журнал;
- Dmesg – загрузка системы, драйвера;
- Apache2 – журнал веб-сервера Apache.
Как видите, у всех ОС, основанных на Linux, логи сервера, как правило имеют одинаковые названия, и директории.
С логами для Windows server, дело обстоит несколько иначе. Если нужно просмотреть журналы, необходимо войти в систему, нажать клавиши «Win» и «R», после чего откроется окно просмотра событий, где есть возможность подобрать интересующие нас логи.
Если вы хотите посмотреть логи PowerShell, то необходимо открыть программу и ввести команду: «Get-EventLog -Logname ‘System’».
Все данные будут выведены в виде удобной таблицы.
Пример работы с логами сервера
Представьте себе, что вы внезапно обнаружили существенное увеличение нагрузки на ваш сервер, связанное с внешними воздействиями. Сервисы аналитики начинают регистрировать рекорды посещаемости, и можно было бы радоваться, но видно, что эти «пользователи» не совершают действий, которых от них ждут, неважно что это – изучение контента, или покупки на сайте.
Можно потратить много времени на выяснения причины, а можно просто посмотреть логи доступа и проверить, с каких IP, и кто заходил на ваш сайт, в выбранные промежуток времени. Вполне вероятно, что вы обнаружите большое количество переходов с нескольких IP-адресов, которые делались автоматически, то есть ваш сайт попал под DDoS-атаку.
В этом случае, можно заблокировать доступ к сайту с выбранных IP, и в дальнейшем расширять этот список, при необходимости.
Вывод
На сегодняшний день, log-файлы сервера, являются крайне удобным инструментом, который позволяет отслеживать работу сайта, выявлять баги и ошибки, злонамеренных пользователей, противодействовать DDoS-атакам.
Для того, чтобы правильно работать с логами сервера, необходимо знать их расположение, иметь возможность изучить нужные файлы, а также понимать разные типы записей. В большинстве панелей управления, пользователю сразу предоставляется возможность включать и выключать запись логов. К тому же есть возможность скачивать или просматривать журналы.
Кроме того, сегодня можно найти ряд программного обеспечения, и они позволяют взаимодействовать с информацией из журналов через удобный графический интерфейс, с большой скоростью расшифровывать её и выводить в простом виде.
У систем, основанных на Linux, как правило примерно одинаковое расположение файлов с логами, что существенно упрощает работу с ними.
У Windows Server, есть свой собственный графический интерфейс для чтения логов, который весьма удобен, и позволяет быстро получить необходимую информацию.
Загрузка…
(PHP 4, PHP 5, PHP 7, PHP 
error_log — Отправляет сообщение об ошибке заданному обработчику ошибок
Описание
error_log(
string $message,
int $message_type = 0,
?string $destination = null,
?string $additional_headers = null
): bool
Список параметров
-
message -
Сообщение об ошибке, которое должно быть логировано.
-
message_type -
Определяет куда отправлять ошибку.
Возможны следующие значения:Типы журналов error_log()
0 Сообщение messageотправляется в системный регистратор PHP, используя
механизм логирования операционной системы, или файл, в зависимости от значения директивы
error_log
в конфигурационном файле. Это значение по умолчанию.1 Сообщение messageотправляется электронной почтой на адрес, установленный в параметре
destination. Это единственный тип сообщения, где используется четвёртый параметр
additional_headers.2 Больше не используется. 3 messageприменяется к указанному в
destinationфайлу. Перенос строки автоматически не добавляется в конец
message.4 Сообщение messageотправляется напрямую в обработчик
логера SAPI. -
destination -
Назначение. Устанавливается в зависимости от параметра
message_type. -
additional_headers -
Дополнительные заголовки. Используется, когда значение параметра
message_type
—1.
Данный тип сообщения использует ту же внутреннюю функцию, что и
mail().
Возвращаемые значения
Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.
Если message_type равен нулю, функция всегда возвращает true,
независимо от того, может ли ошибка логироваться или нет.
Список изменений
| Версия | Описание |
|---|---|
| 8.0.0 |
Параметр destination иadditional_headers теперь допускают значение null.
|
Примеры
Пример #1 Примеры использования error_log()
<?php
// Отправляет уведомление посредством серверного лога, если мы не можем
// подключиться к базе данных.
if (!Ora_Logon($username, $password)) {
error_log("База данных Oracle недоступна!", 0);
}// Уведомить администратора по электронной почте, если невозможно выделить ресурсы для FOO
if (!($foo = allocate_new_foo())) {
error_log("Большая проблема, мы выпали из FOO!", 1,
"operator@example.com");
}// другой способ вызвать error_log():
error_log("Вы ошиблись!", 3, "/var/tmp/my-errors.log");
?>
Примечания
Внимание
error_log() не является бинарно-безопасной функцией. message обрезается по null-символу.
Подсказка
message не должен содержать null-символ. Учтите, что message может передаваться в файл, по почте, в syslog и т.д. Используйте подходящую преобразующую или экранирующую функцию, base64_encode(), rawurlencode() или addslashes() перед вызовом error_log().
kevindougans at gmail dot com ¶
12 years ago
Advice to novices: This function works great along with "tail" which is a unix command to watch a log file live. There are versions of Tail for Windows too, like Tail for Win32 or Kiwi Log Viewer.
Using both error_log() and tail to view the php_error.log you can debug code without having to worry so much about printing debug messages to the screen and who they might be seen by.
Further Note: This works even better when you have two monitors setup. One for your browser and IDE and the other for viewing the log files update live as you go.
Sion ¶
4 years ago
DO NOT try to output TOO LARGE texts in the error_log();
if you try to output massive amounts of texts it will either cut of the text at about 8ooo characters (for reasonable massive strings, < 32 K characters) or (for insanely massive strings, about 1.6 million characters) totally crash without even throwing an error or anything (I even put it in a try/catch without getting any result from the catch).
I had this problem when I tried to debug a response from a wp_remote_get(); all of my error_log() worked as they should, except for ONE of them... (-_-)
After about a day of debugging I finally found out why & that's why I type this.
Apparently the response contained a body with over 1.6 million chars (or bytes? (whatever strlen() returns)).
If you have a string of unknown length, use this:
$start_index = 0;
$end_index = 8000;
error_log( substr( $output_text , $start_index , $end_index ) );
frank at booksku dot com ¶
16 years ago
Beware! If multiple scripts share the same log file, but run as different users, whichever script logs an error first owns the file, and calls to error_log() run as a different user will fail *silently*!
Nothing more frustrating than trying to figure out why all your error_log calls aren't actually writing, than to find it was due to a *silent* permission denied error!
i dot buttinoni at intandtel dot com ¶
14 years ago
Be carefull. Unexpected PHP dies when 2GByte of file log reached (on systems having upper file size limit).
A work aorund is rotate logs :)
php at kennel17 dot NOSPAM dot co dot uk ¶
17 years ago
It appears that the system log = stderr if you are running PHP from the command line, and that often stderr = stdout. This means that if you are using a custom error to both display the error and log it to syslog, then a command-line user will see the same error reported twice.
Anonymous ¶
19 years ago
when using error_log to send email, not all elements of an extra_headers string are handled the same way. "From: " and "Reply-To: " header values will replace the default header values. "Subject: " header values won't: they are *added* to the mail header but don't replace the default, leading to mail messages with two Subject fields.
<?php
error_log
("sometext", 1, "zigzag@my.domain",
"Subject: FoonFrom: Rizzlas@my.domainn");?>
---------------%<-----------------------
To: zigzag@my.domain
Envelope-to: zigzag@my.domain
Date: Fri, 28 Mar 2003 13:29:02 -0500
From: Rizzlas@my.domain
Subject: PHP error_log message
Subject: Foo
Delivery-date: Fri, 28 Mar 2003 13:29:03 -0500
sometext
---------------%<---------------------
quoth the docs: "This message type uses the same internal function as mail() does."
mail() will also fail to set a Subject field based on extra_header data - instead it takes a seperate argument to specify a "Subject: " string.
php v.4.2.3, SunOS 5.8
russ at russtanner dot com ¶
3 years ago
You can easily filter messages sent to error_log() using "tail" and "grep" on *nix systems. This makes monitoring debug messages easy to see during development.
Be sure to "tag" your error message with a unique string so you can filter it using "grep":
In your code:
error_log("DevSys1 - FirstName: $FirstName - LastName: $Lastname");
On your command line:
tail -f /var/log/httpd/error_log | grep DevSys1
In this example, we pipe apache log output to grep (STDIN) which filters it for you only showing messages that contain "DevSys1".
The "-f" option means "follow" which streams all new log entries to your terminal or to any piped command that follows, in this case "grep".
Matthew Swift ¶
3 years ago
Relative paths are accepted as the destination of message_type 3, but beware that the root directory is determined by the context of the call to error_log(), which can change, so that one instance of error_log () in your code can lead to the creation of multiple log files in different locations.
In a WordPress context, the root directory will be the site's root in many cases, but it will be /wp-admin/ for AJAX calls, and a plugin's directory in other cases. If you want all your output to go to one file, use an absolute path.
paul dot chubb at abs dot gov dot au ¶
14 years ago
When logging to apache on windows, both error_log and also trigger_error result in an apache status of error on the front of the message. This is bad if all you want to do is log information. However you can simply log to stderr however you will have to do all message assembly:
LogToApache($Message) {
$stderr = fopen('php://stderr', 'w');
fwrite($stderr,$Message);
fclose($stderr);
}
SJL ¶
15 years ago
"It appears that the system log = stderr if you are running PHP from the command line"
Actually, it seems that PHP logs to stderr if it can't write to the log file. Command line PHP falls back to stderr because the log file is (usually) only writable by the webserver.
stepheneliotdewey at GmailDotCom ¶
15 years ago
Note that since typical email is unencrypted, sending data about your errors over email using this function could be considered a security risk. How much of a risk it is depends on how much and what type of information you are sending, but the mere act of sending an email when something happens (even if it cannot be read) could itself imply to a sophisticated hacker observing your site over time that they have managed to cause an error.
Of course, security through obscurity is the weakest kind of security, as most open source supporters will agree. This is just something that you should keep in mind.
And of course, whatever you do, make sure that such emails don't contain sensitive user data.
p dot lhonorey at nospam-laposte dot net ¶
16 years ago
Hi !
Another trick to post "HTML" mail body. Just add "Content-Type: text/html; charset=ISO-8859-1" into extra_header string. Of course you can set charset according to your country or Env or content.
EG: Error_log("<html><h2>stuff</h2></html>",1,"eat@joe.com","subject :lunchnContent-Type: text/html; charset=ISO-8859-1");
Enjoy !
eguvenc at gmail dot com ¶
14 years ago
<?php
//Multiline error log class
// ersin güvenç 2008 eguvenc@gmail.com
//For break use "n" instead 'n'
Class log {
//
const USER_ERROR_DIR = '/home/site/error_log/Site_User_errors.log';
const GENERAL_ERROR_DIR = '/home/site/error_log/Site_General_errors.log';
/*
User Errors...
*/
public function user($msg,$username)
{
$date = date('d.m.Y h:i:s');
$log = $msg." | Date: ".$date." | User: ".$username."n";
error_log($log, 3, self::USER_ERROR_DIR);
}
/*
General Errors...
*/
public function general($msg)
{
$date = date('d.m.Y h:i:s');
$log = $msg." | Date: ".$date."n";
error_log($msg." | Tarih: ".$date, 3, self::GENERAL_ERROR_DIR);
}
}
$log = new log();
$log->user($msg,$username); //use for user errors
//$log->general($msg); //use for general errors
?>
franz at fholzinger dot com ¶
17 years ago
In the case of missing your entries in the error_log file:
When you use error_log in a script that does not produce any output, which means that you cannot see anything during the execution of the script, and when you wonder why there are no error_log entries produced in your error_log file, the reasons can be:
- you did not configure error_log output in php.ini
- the script has a syntax error and did therefore not execute
daniel dot fukuda at gmail dot com ¶
13 years ago
If you have a problem with log file permission *silently*
it's best to leave error_log directive unset so errors will be written in your Apache log file for current VirtualHost.
Anonymous ¶
2 years ago
Depending on the error, you may also want to add an error 500 header, and a message for the user:
$message = 'Description of the error.';
error_log($message);
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
exit($message);
Robert Chapin ¶
4 years ago
When error_log() unexpectedly uses stdout, you should check if the php.ini value for error_log is empty in your CLI environment. Something as simple as this might restore expected behavior:
<?php ini_set('error_log', 'error_log'); ?>
kazezb at nospam dot carleton dot edu ¶
17 years ago
It appears that error_log() only logs the first line of multi-line log messages. To log a multi-line message, either log each line individually or write the message to another file.
Anonymous ¶
13 years ago
After scouring the internet for getting event logging to
work in syslog on Windows 2003, I found the following
from this post and was able to successfully get Windows
Event Viewer to log PHP errors/notices:
http://forums.iis.net/p/1159662/1912015.aspx#1913338
1. Copy the PHP 5 binaries to "C:php".
2. Right-click My Computer and select Properties to bring
up the Computer Properties dialog. Switch to the Advanced
tab and click Environment Variables. Find the system
environment variable PATH, edit it and add ";C:php"
(without the quotes) to the end.
3. Make sure that the configuration file "php.ini" resides
in the directory "C:php" and contains the correct path
settings.
4. DELETE any old "php.ini" files from "C:WINDOWS"
and other directories.
5. Open REGEDIT, navigate to the key
"HKLMSOFTWAREPHP" and DELETE the string value
"IniFilePath" from there. It is outdated and no longer
necessary!
6. Modify NTFS security permissions of the directory
"C:php" to give Read and Execute permissions to (1) the
IIS Guest Account and (2) the group IIS_WPG.
7. Modify NTFS security permissions of the directories
"C:phpsession" and "C:phpupload" to give additional
Modify permissions to (1) the IIS Guest Account and (2)
the group IIS_WPG.
8. Navigate to the registry key
"HKLMSYSTEMCurrentControlSetServicesEventlog
Application" and edit the value "CustomSD" there. Find
the substring "(D;;0xf0007;;;BG)" which Denies access to
the application event log for Builtin Guest accounts (like
the IIS Web User account) and replace this substring with
"(A;;0x3;;;BG)" which allows read and write access. Please
pay attention to leave the rest of the security string intact.
Damaging this value can have dangerous effects!
9. Create or update the registry key
"HKLMSYSTEMCurrentControlSetServicesEventlogApplication
PHP-5.2.0" (adapt the last to your version part
if necessary) with the following values:
* "EventMessageFile" (REG_EXPAND_SZ) = "C:phpphp5ts.dll"
* "TypesSupported" (REG_DWORD) = 7






