Где я могу найти файлы журнала ошибок?
Где я могу найти файлы журнала ошибок? Мне нужно проверить их для решения внутренней ошибки сервера, показанной после установки 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