Где я могу найти файлы журнала ошибок?

Где я могу найти файлы журнала ошибок? Мне нужно проверить их для решения внутренней ошибки сервера, показанной после установки suPHP.

6 ответов

Вы можете использовать "lsof", чтобы найти открытые файлы журналов в вашей системе. lsof просто дает вам список всех открытых файлов.

Используйте grep для "log"... используйте grep снова для "php" (если имя файла содержит строки "log" и "php", как в "php_error_log", и вы являетесь пользователем root, вы найдете файлы, не зная конфигурации),

        root@lnx-work:~# lsof |grep log
        ... snip
        gmain     12148 12274       user   13r      REG              252,1    32768     661814 /home/user/.local/share/gvfs-metadata/home-11ab0393.log
        gmain     12148 12274       user   21r      REG              252,1    32768     662622 /home/user/.local/share/gvfs-metadata/root-56222fe2.log
        gvfs-udis 12246             user  mem       REG              252,1    55384     790567 /lib/x86_64-linux-gnu/libsystemd-login.so.0.7.1
==> apache 12333             user  mem       REG              252,1    55384     790367 /var/log/http/php_error_log**
        ... snip 

        root@lnx-work:~# lsof |grep log |grep php 
        **apache 12333             user  mem       REG              252,1    55384     790367 /var/log/http/php_error_log**
        ... snip 

Также см. Эту статью о поиске открытых файлов журналов: Поиск открытых файлов журналов в системе Linux

Работает для меня. Как записать все ошибки php в журнал?

Просто добавьте следующую строку в /etc/php.ini для регистрации ошибок в указанном файле - /var/log/php-scripts.log

vi /etc/php.ini

Изменить директиву error_log

error_log = /var/log/php-scripts.log

Убедитесь, что display_errors установлен в Off (нет ошибок для конечных пользователей)

display_errors = Off

Сохраните и закройте файл. Перезагрузите веб-сервер:

/etc/init.d/httpd restart

Как мне регистрировать ошибки в системном журнале или в журнале событий Windows Server?

Измените error_log следующим образом:

error_log = syslog

Как посмотреть логи?

Login using ssh or download a log file /var/log/php-scripts.log using sftp:
$ sudo tail -f /var/log/php-scripts.log

На CentoS с установленным cPanel мои журналы были в:

/usr/local/apache/logs/error_log

Смотреть: tail -f /usr/local/apache/logs/error_log

Какую ОС вы используете и какой веб-сервер? В Linux и Apache вы можете найти apache error_log в /var/log/apache2/

Это тебе демонстративно поможет,

https://davidwinter.me/enable-php-error-logging/

ИЛИ

В php.ini: (vim /etc/php.ini или Sudo vim /usr/local/etc/php/7.1/php.ini)

display_errors = Выкл.

log_errors = Вкл.

error_log = /var/log/php-errors.log

Сделайте файл журнала доступным для записи по www-data:

sudo touch /var/log/php-errors.log

/var/log/php-errors.log

sudo chown: www

Благодарность,

Это предпочтительный ответ в большинстве случаев, поскольку он позволяет вам отделить выполнение программного обеспечения от непосредственного знания серверной платформы, что делает ваш код гораздо более переносимым. Если вы делаете много cron/cgi, это может не помочь напрямую, но его можно установить в конфигурацию во время выполнения веб-интерфейса, из которой извлекаются сценарии cron/cgi, чтобы обеспечить постоянство расположения журнала в этом случае.


Вы можете получить текущий файл журнала, назначенный изначально php на любой платформе во время выполнения, используя:

ini_get('error_log');

Это возвращает значение, распределяемое напрямую в двоичный файл php веб-сервером, что и требуется в 90% случаев использования (за явным исключением является cgi). Cgi часто регистрируется в том же месте, что и клиент http-сервера http, но не всегда.

Вы также захотите проверить, что он доступен для записи, прежде чем что-либо делать, чтобы избежать ошибок. Файл conf, который определяет его местоположение (как правило, apache.conf глобально или vhosts.conf для каждого домена), но conf не гарантирует, что права доступа к файлу разрешают доступ на запись во время выполнения.

Я использую Cent OS 6.6 с Apache и для меня файлы журнала ошибок находятся в

/ USR / местные / Apache/ журнал

Для пользователей unix cli:

Скорее всего, запись error_log ini не установлена. Проверять:

php -i | grep error_log
// error_log => no value => no value

Вы можете установить его в своем cli-файле php.ini или просто быстро перенаправить все STDERR в файл:

./myprog 2> myerror.log

Затем быстро:

tail -f myerror.log
Другие вопросы по тегам