Где PHP хранит журнал ошибок? (php5, apache, fastcgi, cpanel)

332

Я нахожусь на общем хостинге и имею Cpanel, Apache, PHP работает fastcgi. Где PHP хранит журнал ошибок?

Есть ли другой способ найти журнал ошибок в среде общедоступного хостинга вместо того, чтобы проходить через всю структуру сайта, чтобы искать файлы error_log?

У меня есть доступ к php.ini (я использую PHP версии 5.2.16).

  • 19
    В Linux либо /var/log/httpd/error_log либо /var/log/apache2/error.log . Эти файлы принадлежат пользователю root, поэтому вам нужно быть пользователем root или использовать sudo чтобы увидеть его или прочитать.
  • 99
    php --info | grep error
Показать ещё 3 комментария
Теги:
error-handling

18 ответов

255
Лучший ответ

Php хранит журналы ошибок в /var/log/apache2, если php является модулем apache2. Общие хосты часто хранят файлы журналов в корневой папке /log. Но... если у вас есть доступ к файлу php.ini, вы можете сделать это:

error_log = /var/log/php-scripts.log

Согласно комментарию rinogo: если вы используете cPanel, файл главного журнала, который вы, вероятно, ищете, хранится (по умолчанию) в

/usr/local/apache/logs/error_log

Если все остальное не удается, вы можете проверить расположение файла журнала, используя

<?php phpinfo(); ?>
  • 20
    «Php хранит журналы ошибок в / var / log / apache2, если php - apache2», а не в RHEL и т. Д., Где имя пакета - «httpd». Никто не может предположить, что имя пакета одинаково для всех дистрибутивов.
  • 28
    К сведению Googlers - если вы используете cPanel, основной файл журнала, который вы, вероятно, ищете, хранится (по умолчанию) в /usr/local/apache/logs/error_log
Показать ещё 4 комментария
77

Попробуйте phpinfo() и проверьте наличие "error_log"

  • 9
    Он просто говорит error_log, путь не указан. Я полагаю, что это возможно, потому что он находится в среде общего хостинга, и если бы у нас был к нему доступ, мы бы увидели все ошибки сайта.
  • 8
    @PHPLOVER говорит то же самое, если вы попробуете echo ini_get('error_log'); ?
Показать ещё 15 комментариев
29

Linux

php --info | grep error 

Терминал выведет местоположение журнала ошибок.

Окна

php --info | findstr /r /c:"error_log"

В командной строке выводится местоположение журнала ошибок

Чтобы установить местоположение журнала

Откройте php.ini и добавьте следующую строку:

error_log = /log/myCustomLog.log

<суб > Спасибо @chelmertez, @Boom за эти (комментарии к вопросу). Суб >

  • 4
    Я на Linux. это не упоминает местоположение журнала для меня.
  • 1
    @Sirex что-нибудь выводит php -info ? Вы должны убедиться, что php на самом деле вызывает PHP для запуска ...
Показать ещё 4 комментария
26

В среде LAMP ошибки php по умолчанию направлены на этот ниже файл.

/var/log/httpd/error_log

Доступ ко всем журналам доступа:

/var/log/httpd/access_log
  • 8
    +1 за: CentOS 5.10, Apache 2.2, WHM 11.40.
  • 0
    Так закомментируйте спецификацию файла журнала ошибок php, и он просто напишет здесь?
15

Как найти свой журнал ошибок PHP в Linux:

eric@dev /var $ sudo updatedb
[sudo] password for eric:
eric@dev /var $ sudo locate error_log

/var/log/httpd/error_log

Другой эквивалентный способ:

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null

/var/log/httpd/error_log
10

Он также может быть /var/log/apache2/error.log, если вы находитесь в движке Google.

И вы можете видеть такой хвост:

tail -f /var/log/apache2/error.log
9

Похоже, что по умолчанию php не регистрирует ошибки, ключ error_log в php.ini закомментирован во всей установке, которую я видел.

Обычно I:

  • найдите файлы php.ini. locate php.ini.
  • Поиск этих файлов для значения error_reporting;

    Которое должно быть настроено на то, что вам достаточно для объединения уровней журнала php.,

    Например: E_ALL & ~E_DEPRECATED & ~E_STRICT

  • Проверьте значение error_log, чтобы убедиться, что оно указывает на фактическое место и не закомментировано.

    Значение по умолчанию не дает полный путь, только имя файла, я не знаю, где этот путь разрешается нормально. Вероятно, /var/log/.

9

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

error_log = /var/log/php.errors

Другим решением было бы написать простой script, в котором будут перечислены все файлы журналов ошибок из дерева каталогов.

5

Лучший способ - посмотреть в файле httpd.conf и посмотреть, что такое по умолчанию. Он также может быть переопределен вашим конкретным виртуальным хостом. Начну с поиска /etc/httpd/conf/httpd.conf или /etc/apache2/httpd.conf и поискать error_log. Он может быть указан как /var/log/httpd/error _log или /var/log/apache2/error_log, но он также может быть указан как просто logs/error_log.

В этом случае это относительный путь, что означает, что он будет находиться под /etc/httpd/logs/error_log. Если вы все еще не можете найти его, проверьте нижнюю часть вашего файла httpd.conf и посмотрите, куда включены ваши виртуальные хосты. Это может быть в /etc/httpd/conf.d/<- как "другое" или "дополнительное". Ваш виртуальный хост может переопределить его, затем с помощью ErrorLog "/path/to/error_log".

5

Если у вас есть сборка Apache и PHP из источника, то по умолчанию журналы ошибок генерируются на вашем ${Apache install dir}/logs/error_log i.e вообще /usr/local/apache2/logs/error_log. Если вы установили его из репозитория, вы найдете его в /var/log/apache2/error_log. Вы также можете установить путь в своем php.ini и проверить его, вызвав phpinfo().

3

NGINX обычно хранит его в /var/log/nginx/error.log или access.log. (В любом случае на Ubuntu)

3

Если вы используете протокол php5-fpm, значение по умолчанию должно быть под

/var/log/php5-fpm.log
3

При настройке файла журнала ошибок в php.ini вы можете использовать абсолютный путь или относительный путь. Относительный путь будет разрешен в зависимости от местоположения генератора script, и вы получите файл журнала в каждом каталоге, в котором есть скрипты. Если вы хотите, чтобы все ваши сообщения об ошибках переходили в один и тот же файл, используйте абсолютный путь к файлу.

Подробнее здесь: http://www.php.net/manual/en/ref.errorfunc.php#53025

  • 0
    Спасибо, это решило мою проблему. Действительно отстойное поведение для относительных определений, чтобы файлы журналов распространялись по всей папке htdocs, и не представляли, с чего начать. Я бы ожидал быть относительно папки установки, как и другие настройки. +1.
2

Найдите файл httpd.conf для ErrorLog, запустив cat <file location> | grep ErrorLog в командной строке. Например:

$ cat /etc/apache2/httpd.conf | grep ErrorLog

Вывод:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/private/var/log/apache2/error_log"

Найдите строку, начинающуюся с ErrorLog, и там ваш ответ.

Примечание. Для виртуальных хостов вы можете редактировать файл виртуальных хостов httpd-vhosts.conf, чтобы указать другое расположение файла журнала.

2

где бы вы этого ни пожелали, если вы установили его вызов функции: error_log ($ errorMessageforLog. "\n", 4, 'somePath/SomeFileName.som');

0
  1. Вы можете зайти в папку File Manager Check Logs.
  2. проверьте файл журнала в папке public_html.
  3. проверьте файл php phpinfo(), где хранится журнал.
0
php --info | grep error

Это полезно прокомментировал sjas на вопрос. так что я включил это как ответ.

  • 1
    (Кажется) это выводит значение для настроек командной строки PHP (например, /etc/php/7.1/cli/php.ini), а не настроек Apache.
-1

Wordpress

Wordpress направит error_log() сообщения на /wp-content/debug.log, если для параметра WP_DEBUG_LOG установлено значение true.

См. документацию Wordpress для WP_DEBUG_LOG

Ещё вопросы

Сообщество Overcoder
Наверх
Меню