Я нахожусь на общем хостинге и имею Cpanel, Apache, PHP работает fastcgi. Где PHP хранит журнал ошибок?
Есть ли другой способ найти журнал ошибок в среде общедоступного хостинга вместо того, чтобы проходить через всю структуру сайта, чтобы искать файлы error_log?
У меня есть доступ к php.ini
(я использую PHP версии 5.2.16).
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(); ?>
/usr/local/apache/logs/error_log
Попробуйте phpinfo()
и проверьте наличие "error_log"
echo ini_get('error_log');
?
php --info | grep error
Терминал выведет местоположение журнала ошибок.
php --info | findstr /r /c:"error_log"
В командной строке выводится местоположение журнала ошибок
Откройте php.ini
и добавьте следующую строку:
error_log = /log/myCustomLog.log
<суб > Спасибо @chelmertez, @Boom за эти (комментарии к вопросу). Суб >
php -info
? Вы должны убедиться, что php
на самом деле вызывает PHP для запуска ...
В среде LAMP ошибки php по умолчанию направлены на этот ниже файл.
/var/log/httpd/error_log
Доступ ко всем журналам доступа:
/var/log/httpd/access_log
Как найти свой журнал ошибок 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
Он также может быть /var/log/apache2/error.log
, если вы находитесь в движке Google.
И вы можете видеть такой хвост:
tail -f /var/log/apache2/error.log
Похоже, что по умолчанию php не регистрирует ошибки, ключ error_log
в php.ini закомментирован во всей установке, которую я видел.
Обычно I:
locate php.ini
.Поиск этих файлов для значения error_reporting
;
Которое должно быть настроено на то, что вам достаточно для объединения уровней журнала php.,
Например: E_ALL & ~E_DEPRECATED & ~E_STRICT
Проверьте значение error_log
, чтобы убедиться, что оно указывает на фактическое место и не закомментировано.
Значение по умолчанию не дает полный путь, только имя файла, я не знаю, где этот путь разрешается нормально. Вероятно, /var/log/
.
Вы должны использовать абсолютный путь при настройке переменной error_log в файле php.ini, в противном случае журналы ошибок будут храниться в соответствии с вашим относительным путем.
error_log = /var/log/php.errors
Другим решением было бы написать простой script, в котором будут перечислены все файлы журналов ошибок из дерева каталогов.
Лучший способ - посмотреть в файле 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".
Если у вас есть сборка Apache и PHP из источника, то по умолчанию журналы ошибок генерируются на вашем ${Apache install dir}/logs/error_log
i.e вообще /usr/local/apache2/logs/error_log
. Если вы установили его из репозитория, вы найдете его в /var/log/apache2/error_log
. Вы также можете установить путь в своем php.ini
и проверить его, вызвав phpinfo()
.
NGINX обычно хранит его в /var/log/nginx/error.log или access.log. (В любом случае на Ubuntu)
Если вы используете протокол php5-fpm, значение по умолчанию должно быть под
/var/log/php5-fpm.log
При настройке файла журнала ошибок в php.ini вы можете использовать абсолютный путь или относительный путь. Относительный путь будет разрешен в зависимости от местоположения генератора script, и вы получите файл журнала в каждом каталоге, в котором есть скрипты. Если вы хотите, чтобы все ваши сообщения об ошибках переходили в один и тот же файл, используйте абсолютный путь к файлу.
Подробнее здесь: http://www.php.net/manual/en/ref.errorfunc.php#53025
Найдите файл 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
, чтобы указать другое расположение файла журнала.
где бы вы этого ни пожелали, если вы установили его вызов функции: error_log ($ errorMessageforLog. "\n", 4, 'somePath/SomeFileName.som');
php --info | grep error
Это полезно прокомментировал sjas на вопрос. так что я включил это как ответ.
Wordpress направит error_log()
сообщения на /wp-content/debug.log
, если для параметра WP_DEBUG_LOG
установлено значение true.
/var/log/httpd/error_log
либо/var/log/apache2/error.log
. Эти файлы принадлежат пользователю root, поэтому вам нужно быть пользователем root или использоватьsudo
чтобы увидеть его или прочитать.php --info | grep error