отладка — error_log () не будет печататься в файл

Название в значительной степени говорит обо всем. Я рвал на себе волосы, пытаясь заставить это работать весь день. Я нахожусь в процессе создания системы входа в систему на основе PHP, и мне нужно сделать некоторую отладку. Самым полезным для меня сейчас будет возможность записывать отладочные сообщения в файл в определенные моменты программы PHP. Исходя из документации, похоже, это то, что error_log() должен делать, но, несмотря на все, что я пробовал, у меня не было абсолютно никакого успеха. Полный список всего, что я пробовал ниже:

  • Добавлено следующее к /etc/php/7.0/apache2/php.ini

    error_reporting = E_ALL
    display_errors = On
    log_errors = On
    
  • Дополнительно попробовал настройку error_log в местах в пределах /usr/, /var/www/http/, а также /home/

  • Используемый ini_set() а также error_reporting() установить все эти переменные, в том числе error_log из файла PHP

  • Вручную создайте файлы, в которые предполагается записать, и установите для их владельца пользователя и группы значение www-data и их разрешения на 777

  • Не в последнюю очередь, переустановка libapache2-mod-php7.0 а также php7.0, но безрезультатно

  • В основном все, кроме использования моего ноутбука, чтобы разбить 3-е окно истории моего офисного здания непосредственно перед прыжком к моей предполагаемой смерти

Я действительно не могу найти что-то еще, чтобы попробовать в Google, поэтому я решил спросить экспертов, и вот я здесь. Если кто-то может предоставить какие-либо предложения, это будет с благодарностью.

4

Решение

Я предполагаю, что журналы записываются в журналы sys, потому что в error_log () вы не указали место назначения.

Попробуйте следующий код

error_log("An error occured", 3, "/var/tmp/my-errors.log");

Убедитесь, что этот файл может быть прочитан с помощью php или fpm, или www-data, в зависимости от вашей конфигурации вы можете создать его раньше с помощью touch и добавить разрешения вручную с помощью chmod

3 означает, что местом назначения является файл

Если вы используете apache, зайдите в httpd.conf или в любое другое место (v где может присутствовать расположение ErrorLog

ErrorLog "/var/log/apache2"

Затем проверьте, имеет ли этот файл следующую группу пользователей с ls -la ll и т.п.

 -rwxrwxr-x 1 www-data www-data

Нечто подобное должно появиться.

Другой вариант — установить следующее в правильном php.ini (CLI и apache имеют разные файлы php.ini).

 error_log = /var/log/phperrors.log

затем

 touch /var/log/phperrors.log
chown www-data: /var/log/phperrors.log
chmod +rw /var/log/phperrors.log

Чудес не бывает, но если это все еще не работает, вы можете написать и зарегистрировать свой собственный обработчик ошибок с set_error_handler() Вы можете найти примеры, как это сделать в Руководство по PHP. Это больше похоже на взлом, но это будет работать наверняка. Если этого не произойдет, то это означает, что ошибки вообще не запускаются, поэтому вам следует посмотреть, редактируете ли вы правильный php.ini или используете ini_set () до того, как возникнет ошибка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector