Php не пишутся логи

Лог ошибок PHP

Когда на сервере не работает один из сайтов — причины следует искать в программном коде, прежде всего следует изучить лог ошибок РНР (актуально для большинства сайтов, РНР является самым популярным языком веб-программирования). В рамках материала рассмотрено как включить лог ошибок php.

Включение лога ошибок PHP в php.ini

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

Делается это следующим образом:

display_errors = Off
log_errors = On
error_log = /var/log/php-errors.log

При активации display_errors ошибки будут выводится на экран, в директиве error_log задается путь к файлу, в который будет писаться информация необходимая для отладки проекта.

Затем нужно создать файл php-errors.log, на него необходимо выставить права позволяющие веб-серверу записывать в файл данные. В Debian подобных системах Apache работает от имени системного пользователя www-data

Затем нужно перезапустить веб-сервер, для Debian/Ubuntu

Получилось или нет можно увидеть в phpinfo. Там же можно посмотреть режим работы РНР (если это Apache Handler, то есть еще один способ включения лога, об этом ниже).

Как узнать еще режим работы PHP и текущее значение параметра error_log

Можно создать в корне сайта, работающего с сервера файл phpinfo и поместить в него одну функцию

И обратиться к файлу из браузера

http://sitename.com/phpinfo.php

Если применяются редиректы может потребоваться временно переименовать файл .htaccess в корне сайта.

В выводе phpinfo.php можно будет увидеть всю информацию о существующих настройках РНР

как проверить режим работы PHP

Режим работы РНР в примере Apache 2.0 Handler — РНР работает в режиме модуля веб-сервера.

Значение error_log отсутствует, значит в данной конфигурации логирование на уровне конфигурации сервера не включено.

Включить лог ошибок PHP

Описанный выше порядок действий позволит включить логирование ошибок РНР при любом режиме работы РНР. При отладке работы сайта при конфигурации с mod-apache следует также проверять логи веб-сервера.

Читайте также:  Сортировка данных массива python

Вся информация будет в них, логи нужно искать в /var/log/apache2 и /var/log/httpd в зависимости от дистрибутива. Лог можно найти выполнив

Как включить лог ошибок php в .htacccess при использовании Apache с mod_php

При использовании Apache с mod_php есть альтернативный вариант не требующий редактирования php.ini.

В .htaccess в корне сайта добавляется:

php_flag log_errors On
php_value error_log /var/log/php-errors.log

Выключается логирование установкой основной опции в Off

php_flag log_errors Off

Плюс такого способа в том, что его можно использовать на серверах где нет root доступа. Настройки будут применяться не ко всему серверу, а только к сайту в корне которого добавлен .htaccess.

С fast_cgi директива php_flag работать не будет — возникнет ошибка 500.

Читайте про ошибку 500 и ее причины. Очень часто она появляется как следствие неверной отработки скриптов или настроек сервера не удовлетворяющим требованиям программного кода сайта.

Источник

php не ведёт лог ошибок

Apache выдаёт ошибку 500, подозреваю что эта ошибка возникает на стороне php, нужно её выловить. В php.ini добавлены опции:

log_errors = On error_log = /var/log/php_errors.log

В какой php.ini? Тот который /etc/php.ini? А ты уверен что твой mod_php (скорей всего) на него вообще обращает внимание? Лог /var/log/httpd/error_log (или /var/log/apache/error_log) не устроит?

В апачевский лог пишется только:

Это точно ошибка пхп, а не вебсервера?

Если случается ошибка в PHP скрипте, ответ обычно не 500.

И страница часто пустая, а у тебя там какой-то контент.

goingUp ★★★★★ ( 22.05.18 15:51:38 MSK )
Последнее исправление: goingUp 22.05.18 15:52:38 MSK (всего исправлений: 1)

Я не сказать, что сильно так силён в вебсерверах, поэтому мне важнее выловить и устранить ошибку, без разницы в apache она или http. Я надеюсь, мне кто-нибудь в этом поможет.

В еррор лог апача посмотри, а также на отдаваемую страницу при ошибке, там 531 байт информации.

У меня mod_access_compat.so не хватало, исправил. Но вернёмся всё же к логам php.

Ну ок, будем считать, что дело теперь не в апаче.

Читайте также:  Java ch qos logback

Кроме log_errors надо включать также и error_reporting, например так:

Файл, куда эти ошибки записываются, должен быть доступен для записи под юзером, из под которого у тебя работает пхп. Делать 777 у /var/log не советую, лучше завести под это отдельный каталог.

Также убедись, что php.ini читается процессом пхп. Создай файл с phpinfo(), попробуй изменить в php.ini какой-то параметр, и смотри на результат. Возможно, придется перезапустить вебсервер.

Значения error_reporting и log_errors могут перезаписываться твоей CMS, поэтому желательно изменять эти директивы через ее конфиг. Кроме этого, эти параметры могут меняться и напрямую в скриптах, т.е. без использования настроек CMS, так что если все вышеперечисленное не сработает, то погрепай свой сайт на их наличие.

Редактирование директивы error_reporting не помогло. А вот создание пустого файла /var/log/php_errors.log помогло

Источник

не ведутся логи php

Добрый день. Есть на сайте много php скриптов, один из них не выполняется. php_errors.log полностью пустой. По скрипту вопросов нет, но подскажите, как заставить php вести логи? Напишу, что уже пробовал.

в php.ini прописаны такие директивы, как log_errors=1 error_log=/home/username/logs/php_error.log

указывал уже через .htaccess директивами: php_flag log_errors on php_value error_log /home/username/logs/php_error.log

в начало нужного php скрипта вписывал: ini_set(‘display_errors’, true); error_reporting(E_ALL);

Владелeц файла — тот самый username, права на него 0644

а скрипт сам не отключает ли репорт ошибок?

А что если этот скрипт запустить из консоли, что-нибудь напишет?

поищи выхлоп в error.log веб-сервера? может, оно туда всё пишет

Напишет, так как это веб-страничка ( с html кодом ).

Если точнее, то не пусто, но искомого там нет.

В самом скрипте пропишите где-нибудь

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

Непонятное что-то. Ошибка отобразилась на главной, на радостях я ушел на перекур, как вернулся — её и след простыл. ———- ошибка была в config.php в месте подключения sql базы, но там 100% все верно указано. —- В любом случае спасибо вам.

Ты апач перезапускал после правки php.ini?

ну это же не обязательно, не ?

Читайте также:  Php json array value

Пока не перезапустишь он новый php.ini не подхватит. Погугли если не веришь.

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

Я тоже об этом задумался. По моей логике нет, но тогда нельзя объяснить то о чём пишет ТС. Возможно, имеет место такой вариант: слушающий апач не читает php.ini, это делается уже после форка и сброса привилегий. В таком случае вполне возможно что один из воркеров сдох (скажем, по MaxRequestsPerChild) и вместо него запустился свеженький с новым php.ini. А след. запрос уже был обработан старым воркером. Это объясняет столь странное поведение, но это всего лишь догадка. Её можно легко проверить через strace, но мне влом. Нормальный админ всегда сделает graceful restart :).

просто у меня такое тоже наблюдалось, поэтому заинтересовался
уже в голову приходили мысли, типо определённые параметры срабатывают без рестарта. Но в документации про такое ни слова (правда искал относительно давно)

Источник

Как включить запись ошибок в php?

5cbb6352df553631078584.png

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

я не создавал их столько сам, глядя на дату изменения одного из файлов он обновился вчера, кем? для чего? как это отследить?)

Продолжаем: Погуглил, пишут нужно в .htaccess файл внести записи:

php_value display_errors on php_value display_startup_errors on

Сделал это, обращаюсь к ЛЮБОЙ странице сайта и получаю Internal Server Error 500.
Читаю файл и вижу:
### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.

Что дальше делать?) куда лезть?)

Включить логи php изменив php.ini ?? Пробовал, вот так:

error_reporting = E_ALL display_errors = On display_startup_errors = On log_errors = On log_errors_max_len = 1024 error_log = error_log

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

P.s. Хостинг сказал, мол ошибки ищите по адресу: /home2/username8/public_html/error_log и при этом, то что ошибки не записываются их не волнует, говорят мол мы не отвечаем за ваш скрипт, это на вашей стороне и мы туда не суемся.

Простой 16 комментариев

Источник

Оцените статью