Я не знаю, есть ли там? но php, встроенный в веб-сервер, также сохраняет свои журналы ошибок в файле? для целей хвоста, например, при создании виртуального хоста в apache.
UPDATE: я использую mac osx
Я не знаю, есть ли там? но php, встроенный в веб-сервер, также сохраняет свои журналы ошибок в файле? для целей хвоста, например, при создании виртуального хоста в apache.
UPDATE: я использую mac osx
Да, 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
Встроенный веб-сервер по умолчанию не регистрируется нигде, поэтому вам нужно предоставить 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() будут регистрироваться в указанном вами файле.
При использовании встроенного сервера 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
).
Для обновления для Mac OS X High Sierra (10.13.5): это сработало для меня без необходимости изменять какие-либо значения по умолчанию для PHP. Просто используйте
error_log('*** notice this***');
и хвост журнала ошибок:
tail -f /var/log/apache2/error_log
Я в основном знаю 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
для использования собственного файла, но вы бы узнали о перенаправлении вывода, которое, я бы сказал, гораздо более важная концепция с бесчисленными приложениями.
Если вы используете Mac OS или Ubuntu, это позволяет легко просматривать журнал ошибок
tail -f /var/log/apache2/error_log
это даст вам журнал ошибок в реальном времени или вы можете использовать, что даст последние журналы ошибок
tail /var/log/apache2/error_log