Скачать error log

Получайте последние сообщения из журнала ошибок для диагностики проблем сайта. Быстрее выявляйте и устраняйте проблемы.






  • Детали
  • Отзывы
  • Установка
  • Разработка

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

Получите доступ к журналам своего сайта и устраняйте проблемы быстрее!

View Demo

Функции

  • Включите ведение журнала ошибок WordPress с помощью:
    • ..htaccess
    • wp-config.php с использованием inl_set
    • wp-config.php с использованием WP_DEBUG
  • Поиск и просмотр журналов ошибок:
    • PHP
    • WordPress
  • Настраивайте уведомления по электронной почте об изменениях журнала:
    • Устанавливайте адрес электронной почты
    • Регулируйте частоту
  • Настройте параметры монитора журнала:
    • Выберите журнал для отображения
    • Выбирайте, что отображать в журнале:
      • Определенное количество последних строк в файле
      • Сведения за определенный промежуток времени
      • Файл полностью
  • Просмотр или сохранение части журналов ошибок PHP в виде файла TXT
  • Совместимость с последней версией WordPress
  • Невероятно простые настройки для быстрой установки без изменения кода
  • Подробная пошаговая документация и видео

Если у вас есть идеи или пожелания относительно функционала плагина, мы будем рады ознакомиться с ними! Предложить функцию

Документация и видео

  • [Doc] User Guide
  • [Doc] Installation

Помощь и поддержка

Задайте вопрос нашей Службе поддержки клиентов — наши специалисты будут рады помочь вам — https://support.bestwebsoft.com/

Affiliate Program

Earn 20% commission by selling the premium WordPress plugins and themes by BestWebSoft — https://bestwebsoft.com/affiliate/

Перевод

  • Русский (ru_RU)
  • Украинский (uk)

Некоторые из этих переводов неполные. Мы постоянно добавляем новые функции, которые требуют перевода. Если вы хотите создать перевод на свой язык или обновить уже существующий, вы можете отправить текст перевода в PO и MO файлах в поддержку BestWebSoft, и мы обязательно добавим его в наш плагин. Вы также можете скачать последнюю версию программы для работы с PO и MO файлами Poedit.

Рекомендуемые плагины

  • Updater — Выполняйте автоматическую проверку и обновление ядра сайта WordPress до последних версий со всеми установленными плагинами и темами.

Я не могу просмотреть, загрузить или очистить файл журнала.

Вероятно, есть проблема с доступом к файлам и папкам. Для получения дополнительной информации посетите страницуChanging File Permissions.

В чем разница между тремя методами создания файла журнала, которые предлагаются в плагине?

Все методы эквивалентны, когда вы включаете их все, будет работать только один из них.
Могут возникнуть нежелательные конфликты.

1) Регистрация ошибок с помощью ‘.htaccess’ с использованием ‘ini_set’

Этот метод подходит, если у вас есть доступ к файлу «.htaccess» для его редактирования.
Кроме того, этот метод позволяет вам создать файл журнала, его имя, изменить полный путь к нему.
‘php_flag’ and ‘php_value’ изменяет значение директив Apache, изменяя конфигурацию сервера. Плагин использует этот метод только для включения регистрации PHP ошибок и указания пути к файлам журнала. Другие настройки конфигурации вы можете изменить самостоятельно.
Для получения дополнительной информации посетите страницуHow to change configuration settings and Directives list php.ini.

2) Регистрация ошибок с помощью ‘wp-config.php’ с использованием ‘ini_set’

Если у вас нет доступа к файлу «.htaccess», вы можете использовать файл «wp-config.php» для изменения настроек конфигурации сервера с помощью параметра ‘ini_set’ и указанием различных параметров регистрации ошибок и других параметров. Плагин использует этот метод только для активации регистрации PHP ошибок и указания пути к файлам журнала.
Для получения дополнительной информации посетите страницу Runtime Configuration and ini_set.

3) Регистрация ошибок с помощью ‘wp-config.php’ с использованием ‘WP_DEBUG’

Этот метод используется для отладки ошибок с использованием WordPress PHP констант и объявления их в файле «wp-config.php». Это стандартный метод отладки WordPress. Это хороший метод, рекомендованный для использования на сайтах WordPress. Однако, ошибки записываются в файл «debug.log» в каталог ‘wp-content’, и вы не можете изменить полный путь к журналам файлов. Метод считается приоритетным на сайтах WordPress. После объявления этих констант другие методы не будут работать.
Для получения дополнительной информации посетите страницу Errors Debugging on the WordPress.

Почему я не могу выбрать все три метода для включения отладки?

Поскольку все методы эквивалентны, когда вы включаете их все, будет работать только один из них.
Могут возникнуть нежелательные конфликты.

Я нажал на флажок, чтобы получать уведомления из журналa на мой почтовый ящик, однако письма приходят реже, чем ошибки отображаются на странице настроек. Почему?

Функция отправки уведомлений реализована с использованием WordPress хука ‘wp_sthern_event’. Если в течение выбранного периода времени сайт неактивен (на нем нет знака), этот хук не будет работать.

После создания файла журнала на вкладках PHP Error Log Viewer и WP Error Log Viewer появляются одинаковые файлы. Почему?

Это зависит от конфигурации вашего сервера. На вкладке просмотра журнала будет только один файл.

У меня есть некоторые проблемы с работой плагина. Какую информацию мне нужно предоставить для получения техподдержки?

Пожалуйста, убедитесь, что этот вопрос не обсуждался ранее на нашем форуме (https://support.bestwebsoft.com). Если вы не нашли нужного вам ответа, пожалуйста, предоставьте подробное описание проблемы и следующую информацию:

  • ссылку на страницу, на которой возникает проблема
  • Название плагина и его версию. Если вы используете Pro версию, предоставьте номер покупки.
  • версию WordPress
  • Copy and paste into the message your system status report. Please read more here: Instruction on System Status

Thank you, very much for this plugin

Saves Time! Awesome In My Minds Eye

This is a great plugin when you are debugging a website and you need to quickly check the error logs.

Gets log files right in wp admin. Can delete them easily. Thanks for creating such a helpful plugin.

Thank you for this great plugin

Посмотреть все 5 отзывов

«Error Log Viewer by BestWebSoft» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники


  • bestwebsoft

V1.1.2 — 11.01.2022

  • Обновлено: раздел плагинов BWS обновлен.
  • Update : All functionality has been updated for WordPress 5.8.1.
  • Bugfix : Bugs with adding data to wp-config were fixed.

V1.1.1 — 02.04.2020

  • Обновление: Страница настроек плагина была изменена.
  • Обновление: Весь функционал был обновлен для WordPress 5.0.2.
  • Обновление: Обновлено меню BWS.
  • Обновление: Все функциональные возможности были обновлены для WordPress 5.4.

V1.1.0 — 14.11.2019

  • НОВИНКА: Возможность отправлять уведомления по электронной почте при возникновении фатальной ошибки.

V1.0.9 — 04.09.2019

  • Обновление: Обратная связь по деактивации была изменена. Вводящие в заблуждение кнопки были удалены.

V1.0.8 — 25.12.2018

  • Обновление: Все функциональные возможности были обновлены для WordPress 5.0.2.

V1.0.7 — 19.07.2018

  • НОВИНКА: добавлена возможность очистки лог-файла.
  • Исправлено: область отображения журнала ошибок была исправлена.

V1.0.6 — 17.04.2017

  • Исправлено: уязвимость межсайтового скриптинга (XSS) была устранена.

V1.0.5 — 12.10.2016

  • Обновлено: раздел плагинов BWS обновлен.

V1.0.4 — 11.07.2016

  • Обновлено: весь функционал плагина обновлен под версию WordPress 4.5.3.
  • Обновлено: раздел плагинов BWS обновлен.

V1.0.3 — 25.04.2016

  • Обновлено: весь функционал плагина обновлен под версию WordPress 4.5.

V1.0.2 — 09.12.2015

  • Исправлено: проблема с дублированием меню плагина устранена.

V1.0.1 — 20.10.2015

  • Добавлено: возможность восстановить настройки по умолчанию.

V1.0.0 — 08.09.2015

  • Дата выпуска Error Log Viewer

(PHP 4, PHP 5, PHP 7, PHP 8)

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


Как показать ошибки 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.

Под этим списком находится второй список значений. Здесь показано, как установить некоторые часто используемые наборы комбинаций значений отчетов об ошибках, включая значения по умолчанию, предлагаемое значение для среды разработки и предлагаемые значения для "боевого" окружения.


; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

После  всех комментариев указано текущее значение вашего уровня error_reporting. Для локальной разработки я бы предложил установить его на E_ALL, что позволит видеть все ошибки.


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, в конфигурации виртуального хоста добавьте следующее, чтобы определить местоположение журнала ошибок.


ErrorLog ${APACHE_LOG_DIR}/project-error.log

Если же Вы используете в качестве веб-сервера nginx, тогда в конфигурационный файл вашего проекта необходимо добавить следующее:


 error_log /var/www/sites/logs/error.log error;

Итак, в зависимости от вашей локальной среды разработки вам может потребоваться настроить логирование в соответствии с вашими потребностями. В качестве альтернативы, если вы не можете указать журнал логирования на уровне веб-сервера, вы можете установить его на уровне php.ini.


error_log = /path/to/php.log

Стоит отметить, что в этом файле будут регистрироваться все ошибки PHP, и если вы работаете над несколькими проектами, это может быть не совсем удобно. 

Поиск и исправление  ошибок

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

Преимущество, однако, в том, что теперь, когда вы знаете, как включить все это на уровне сервера, вы можете быть уверены, что видите эти ошибки, видите когда они случаются, и исправляете их до того, как их увидят другие!

Как искать и исправлять ошибки? Да очень просто. В журнале ошибок как правило указан файл и строка кода, где произошла ошибка. Также в файле журнала ошибок может храниться вся цепочка вызовов, которая привела к возникновению ошибки. 

В статье мы расскажем о том, что такое логи и как они помогут предотвратить аномальную нагрузку на сервер.

  • Что такое логи
  • Как читать логи
  • Логи доступа (access_log)
  • Логи ошибок (error_log)
  • FTP-логи
  • Логи операций в панели управления
  • Как анализировать логи при высокой нагрузке на сервер

Что такое логи

Логи — это файлы текстового формата, в которых хранятся следующие данные:

  • информация о пользователях,
  • информация о действиях на сервере,
  • информация о дате и времени операций,
  • системная информация о работе сервера.

На хостинге SpaceWeb хранятся логи за прошедший месяц (30 дней): они создаются автоматически в хронологическом порядке. Один файл лога включает в себя историю операций за один прошедший день.

Как читать логи

Каждый log-файл имеет собственную структуру: она отличается в зависимости от типа логов. Чаще всего используются:

  • логи доступа или access_log,
  • логи ошибок или error_log,
  • FTP-логи,
  • логи операций в панели управления.

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

Логи доступа (access_log)

access.log — это текстовый файл, в который записываются все обращения к веб-серверу. Его можно использовать, чтобы получить информацию о посещении вашего ресурса.

Лог доступа имеет следующий вид:

test.ru 123.123.123.123 — — [01/Jan/2022:00:00:00 +0000] «GET /index.html HTTP/1.1» 200 198 «https://test.ru/» «Mozilla/5.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1)» 16143 0

Где:

  • test.ru — доменное имя сайта;
  • 123.123.123.123 — IP-адрес, с которого обращается клиент;
  • 01/Jan/2022:00:00:00 +0000 — дата и время запроса;
  • GET — метод запроса;
  • 200 — последний код ответа, если произошло внутреннее перенаправление (в примере — успешное обращение);
  • 198 — размер ответа в байтах без HTTP-заголовка. Если ответ был размера 0, в лог-файле он отобразится знаком -;
  • «https://test.ru/» «Mozilla/5.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1)» — информация о клиенте (браузере, с которого посетили сайт);
  • 16143 — PID процесса Apache;
  • 0 — время работы процесса Apache.

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

Логи ошибок (error_log)

error.log — это файл, в котором фиксируются все типы ошибок сервера. Логи ошибок  позволяют отследить, в какой момент возникла проблема: это поможет в ее решении.

Лог ошибок (error.log) имеет следующий вид: 

test.ru [Fri Jan 01 00:00:00 2022] [error] [client 123.123.123.123] File does not exist: /home/d/test/public_html/favicon.ico

Где:

  • test.ru — доменное имя сайта;
  • Fri Jan 01 00:00:00 2022 — дата и время возникновения ошибки;
  • 123.123.123.123 — IP-адрес, с которого обратился клиент.

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

FTP-логи

Логи FTP помогают отследить подключения по протоколу FTP и действия при удаленном соединении с сервером.

FTP-лог имеет следующий вид:

2022-01-01T00:00:00+03:00 vhXX pure-ftpd: (?@123.123.123.123) [DEBUG] Command [user] [vhXXtest]
2022-01-01T00:01:00+03:00 vhXX pure-ftpd: (?@123.123.123.123) [INFO] vhXXtest is now logged in
2022-01-01T00:02:00+03:00 vhXX pure-ftpd: (vhXXtest@123.123.123.123) [DEBUG] Command [retr] [configuration.php]
2022-01-01T00:03:00+03:00 vhXX pure-ftpd: (vhXXtest@123.123.123.123) [NOTICE] /home/v/vhXXtest/public_html//configuration.php downloaded (5317 bytes, 77503.32KB/sec)
2022-01-01T00:04:00+03:00 vhXX pure-ftpd: (vhXXtest@123.123.123.123) [DEBUG] Command [pasv] []
2022-01-01T00:05:00+03:00 vhXX pure-ftpd: (vhXXtest@123.123.123.123) [DEBUG] Command [stor] [configuration.php]
2022-01-01T00:06:00+03:00 vhXX pure-ftpd: (vhXXtest@123.123.123.123) [NOTICE] /home/v/vhXXtest/public_html//configuration.php uploaded (5165 bytes, 985.55KB/sec)
2022-01-01T00:07:00+03:00 vhXX pure-ftpd: (vhXXtest@123.123.123.123) [INFO] Logout.

Где:

  • 2022-01-01T00:00:00+03:00 — дата и время действия на сервере FTP,
  • 123.123.123.123 —  IP-адрес сервера,
  • vhXX — имя сервера,
  • vhXXtest — имя FTP-пользователя.

Логи FTP можно получить при обращении в службу технической поддержки.

Логи операций в панели управления

Логи операций позволяют отследить всю активность в панели управления SpaceWeb. Благодаря им вы сможете выявить несанкционированные посещения в системе.

Логи операций в панели управления имеют следующий вид:

46085314   Неуспешная авторизация в клиентской ПУ   123.123.123.123   2022-01-01 00:00:00
46172855   Сделан заказ на домен test.ru; mov;   test   2022-01-01 00:01:00
46172895   Удалён домен test.ru   test   2022-01-01 00:10:00
46518875   Выход из клиентской ПУ   123.123.123.123   test   2022-01-01 00:11:00
46554201   Создание папки   /testforum   test   2022-01-02 00:00:00
46554208   Создана база данных test_bd   test   2022-01-02 00:10:00
46554210   Установка CMS из панели управления   smf test.ru:/testforum/   test   2022-01-02 00:20:00

Где:

  • 46085314 — номер операции,
  • 123.123.123.123 — IP-адрес сервера,
  • test — имя пользователя панели управления,
  • 2022-01-01 00:00:00 — дата и время выполнения операции.

Логи операций в панели управления можно включить в разделе «Профиль» на вкладке Логи ПУ.

Как анализировать логи при высокой нагрузке на сервер

Для анализа логов подключитесь к серверу по SSH. Далее введите команду, которая подходит для вашего случая.

  • Проверьте, на какой странице было наибольшее число посещений за день:

cat test.ru/access_log | awk ‘{ print $8}’ | sort | uniq -c | sort -n -k 1 | tail -n 50

Вместо test.ru укажите корневую директорию сайта.

  • Чтобы проверить запросы за несколько прошедших дней, выполните команду:

cat test.ru/access_log*gz | awk ‘{ print $8}’ | sort | uniq -c | sort -n -k 1 | tail -n 50

Вместо test.ru укажите корневую директорию сайта. После этого сформируется архив с журналом логов.

  • Выявить аномальное число запросов с одного IP-адреса за день:

cat test.ru/access_log | awk ‘{ print $2}’ | sort | uniq -c | sort -n -k 1 | tail -n 50

Вместо test.ru укажите корневую директорию сайта.

  • Чтобы проверить запросы за несколько прошедших дней, выполните команду:

cat test.ru/access_log*gz | awk ‘{ print $2}’ | sort | uniq -c | sort -n -k 1 | tail -n 50

Вместо test.ru укажите корневую директорию сайта. После этого сформируется архив с журналом логов.

Понравилась статья? Поделить с друзьями:
  • Скачать runtime error
  • Скачать engine error
  • Скачать eac error zip
  • Скачать directx error
  • Скачать configuration error 0x0002