Я видел несколько вопросов по этому поводу и, должно быть, пробовал почти все, но все же Apache не будет создавать дамп ядра на рабочем сервере.
Это настройка, которая действительно работает на моей виртуальной машине:
apt-get install gdb apache2-dbg php5-dbg libapr1-dbg libaprutil1-dbg
mkdir /tmp/apache-coredumps
chmod g+w,o+w /tmp/apache-coredumps/
cat <<EOF > /etc/apache2/conf.d/debugging
CoreDumpDirectory /tmp/apache-coredumps
EOF
ulimit -c unlimited
apache2ctl -t && service apache2 restart
На виртуальной машине с помощью «kill -11» я вижу «возможный дамп памяти в / tmp / apache-coredumps» в файле журнала, но эта часть отсутствует на рабочем сервере.
Вот что я тоже пробовал:
Сервер и виртуальная машина - это Debian Wheezy с Apache 2.2.22 (mpm-prefork), PHP 5.4.45.
Что еще может блокировать создание дампа ядра?
Надеюсь, это кому-то поможет.
Обратите внимание, что если у вас есть 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 после запуска сервера.
Я потратил на это часы, чтобы только сейчас наконец понять, в чем проблема.
man core
есть список, который вы должны просмотреть. Первый вариант выглядит вероятным, поскольку /var/cache/apache2
обычно доступен для записи только root, как и /var/www
, который является обычным домашним каталогом пользователя www-data в debian:
There are various circumstances in which a core dump file is not pro-
duced:
* The process does not have permission to write the core file. (By
default the core file is called core, and is created in the current
working directory. See below for details on naming.) Writing the
core file will fail if the directory in which it is to be created is
nonwritable, or if a file with the same name exists and is not
writable or is not a regular file (e.g., it is a directory or a sym-
bolic link).