Я нахожусь на общем хостинге и имею 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(); ?>
Попробуйте phpinfo()
и проверьте наличие "error_log"
В среде LAMP ошибки php по умолчанию направлены на этот ниже файл.
/var/log/httpd/error_log
Доступ ко всем журналам доступа:
/var/log/httpd/access_log
php --info | grep error
Терминал выведет местоположение журнала ошибок.
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 закомментирован во всех установках, которые я видел.
Обычно я:
locate php.ini
. Найдите эти файлы для значения error_reporting
;
Который должен быть настроен на то, что для вас достаточно слияния уровней журнала php. ,
Например: E_ALL & ~E_DEPRECATED & ~E_STRICT
Проверьте значение 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 направит сообщения error_log()
в /wp-content/debug.log
когда для /wp-content/debug.log
WP_DEBUG_LOG
установлено значение true.
См. Документацию WordPress для WP_DEBUG_LOG