Встроенное расположение журнала ошибок сервера PHP

Я не знаю, есть ли там? но php, встроенный в веб-сервер, также сохраняет свои журналы ошибок в файле? для целей хвоста, например, при создании виртуального хоста в apache.

UPDATE: я использую mac osx

Ответ 1

Да, PHP имеет встроенные функции журнала ошибок.

PHP регистрирует ошибки в этом файле автоматически.

Если вы хотите регистрировать ошибки, используйте функцию error_log()

Расположение файла изменяется в зависимости от окружающей среды.

например

в Ubuntu 12.04, его

var/log/php_errors.log

В окнах XAMPP,

\xampp\php\logs\php_errors.log

В Mac OS,

/var/log/apache2/php_errors.log

Ответ 2

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

error_log = /Users/me/test.log
log_errors = on
date.timezone = UTC

Затем вы можете запустить встроенный веб-сервер PHP следующим образом:

php -S 127.0.0.1:8080 -c php.ini

И вызовы error_log() будут регистрироваться в указанном вами файле.

Ответ 3

При использовании встроенного сервера PHP на macOS вам необходимо указать error_log в вашем конфигурационном файле php.ini (php -i | grep php.ini).

Если вы решите использовать syslog (а не файл журнала), например:

error_log = syslog

Затем, чтобы сбрасывать журналы, вы можете использовать команду log на macOS, например

log stream --predicate 'processImagePath contains "php"'

В противном случае используйте определенный путь к файлу для журнала ошибок (например, /usr/local/var/log/php-error.log).

Ответ 4

Для обновления для Mac OS X High Sierra (10.13.5): это сработало для меня без необходимости изменять какие-либо значения по умолчанию для PHP. Просто используйте

error_log('*** notice this***');

и хвост журнала ошибок:

tail -f /var/log/apache2/error_log

Ответ 5

Я в основном знаю Linux, но AFAIK это работает одинаково на любой системе, которую вы можете запустить php. Недавно я потратил неоправданно много времени на то, чтобы заставить Linux работать на "устаревших" макмини с 2009 года. Я не знаю, как кто-то переносит это устаревшее производство. Андроид просто плох, прячется за эту "ерунду на основе Linux". Интересно, сколько юристов потребовалось, чтобы выяснить это? Конечно, GPL ничего не говорит об оборудовании! Благодаря им, когда мобильные устройства неизбежно заменят ноутбуки и настольные компьютеры в течение следующего десятилетия, угроза идей свободного программного обеспечения будет в основном устранена. Они должны использовать эту технику для работы с технологиями пожарной сигнализации. ,

Во всяком случае, достаточно об этом. Я попытаюсь вернуться к теме и научить вас, как это сделать таким образом, чтобы дать вам инструменты для выполнения аналогичных различных задач в будущем. Как говорится в старой поговорке: "Научите человека ловить рыбу, и он больше не сможет продавать ему рыбу".

Мне всегда нравится начинать с man [command] или [command] --help если --help или -h не работает, попробуйте передать неверный ввод, который обычно заставляет его говорить. Будьте осторожны на этом шаге, легко застрять в чтении man-страниц на несколько часов, постарайтесь не забыть о каких-либо временных обязательствах, с которыми вы можете столкнуться.

php --help 

Найдите возможность установить переменные ini:

-d foo[=bar]     Define INI entry foo with value 'bar'

Читая пример php.ini мы находим интересующие вас настройки.


; error_reporting
;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
;   Development Value: E_ALL
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

///

; Log errors to specified file. PHP default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog

все остальные значения по умолчанию выглядят нормально, так что... давайте попробуем:

php -d error_reporting=E_ALL -d error_log=/desired/path/to/error.log -S 0.0.0.0:9999  

Вы можете заметить печать журнала в stderr отсюда. В качестве альтернативы вы можете перенаправить это, добавив 2>/path/to/error.log в конец вышеуказанной команды. Проще, но тогда вы бы не узнали о параметрах -d для установки значений из php.ini и -c для использования собственного файла, но вы бы узнали о перенаправлении вывода, которое, я бы сказал, гораздо более важная концепция с бесчисленными приложениями.

Ответ 6

Если вы используете Mac OS или Ubuntu, это позволяет легко просматривать журнал ошибок

tail -f /var/log/apache2/error_log

это даст вам журнал ошибок в реальном времени или вы можете использовать, что даст последние журналы ошибок

tail /var/log/apache2/error_log