Я хотел бы включить дампы ядра на моем веб-сервере Apache.
Поскольку у меня PHP 5.5 и OPcache, мой сайт Mediawiki вылетает со следующей ошибкой:
child pid ... exit signal Segmentation fault (11)
Поэтому я хотел бы получить больше информации через дамп ядра.
Я создал каталог: /tmp/apache-coredump
принадлежит http:http
(мой пользователь и группа apache) и с правами 777.
Я добавил в httpd.conf
файл:
CoreDumpDirectory "/tmp/apache-coredump"
Но теперь (с инструкцией CoreDumpDirectory) мой сервер Apache вылетает при запуске:
sudo systemctl restart httpd
Job for httpd.service failed.
See 'systemctl status httpd.service' and 'journalctl -xn' for details.
Журнал предоставил мне следующую информацию
apachectl[4149]: CoreDumpDirectory /tmp/apache-coredump does not exist
Проверил, каталог существует 0_ °
Редактировать:
Я изменил CoreDumpDirectory
инструкция в httpd.conf
файл, и это позволяет мне запустить мой веб-сервер
CoreDumpDirectory /tmp
Без инструкции CoreDumpDirectory в ServerRoot (/etc/httpd
) каталог.
Я использую Archlinux 3.10.6-2 64-бит с Apache / 2.2.25 Prefork
Дампы ядра обычно отключены по умолчанию, так как они тратят пространство на диске, вам необходимо включить их для сеанса apache.
$ ulimit -a
core file size (blocks, -c) 0
[...]
$ ulimit -c unlimited
$ systemctl restart httpd
Кроме того, у вас включен SELinux? Выход ls -alZ /tmp/apache-coredump
Надеюсь, это кому-то поможет.
Обратите внимание, что если у вас есть PrivateTmp=true
установить в вашем /usr/lib/systemd/system/apache2.service
(или как он там называется в вашей системе), то есть Apache действительно ищет /tmp
внутри что-то вроде /tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/
, Apache не сможет писать в этот каталог, и вы не получите дамп ядер (из-за systemd
tmp, имеющий 700 разрешений только для root).
Решение состоит в том, чтобы установить PrivateTmp=false
или измените разрешение каталога systemd tmp после запуска сервера.
Я потратил на это часы, чтобы только сейчас наконец понять, в чем проблема.