Назад | Перейти на главную страницу

Включить дампы ядра в Apache

Я хотел бы включить дампы ядра на моем веб-сервере 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 после запуска сервера.

Я потратил на это часы, чтобы только сейчас наконец понять, в чем проблема.