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

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

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

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

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

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(); ?> 

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

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

 /var/log/httpd/error_log 

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

 /var/log/httpd/access_log 

Linux

 php --info | grep error 

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

Windows

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

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

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

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

 error_log = /log/myCustomLog.log 

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

Как найти свой журнал ошибок 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 

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

Обычно я:

  1. искать файлы php.ini. locate php.ini .
  2. Найдите эти файлы для значения error_reporting ;

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

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

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

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

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

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

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

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

 error_log = /var/log/php.errors 

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

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

Лучший способ – посмотреть в свой файл 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».

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

 /var/log/php5-fpm.log 

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

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

См. Больше здесь: http://www.php.net/manual/en/ref.errorfunc.php#53025

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

Найдите файл httpd.conf для ErrorLog , запустив cat <file location> | grep 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 виртуальных хостов, чтобы указать другое расположение файла журнала.

WordPress

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

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