为什么 Debian Wheezy 上的 Apache 不创建核心转储?

为什么 Debian Wheezy 上的 Apache 不创建核心转储?

我已经看到过几个与此相关的问题,并且几乎尝试了所有方法,但 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 中可能存在核心转储”,但是生产服务器上缺少此部分。

这也是我尝试过的:

服务器和虚拟机都是运行 Apache 2.2.22(mpm-prefork)和 PHP 5.4.45 的 Debian Wheezy。

还有什么可能阻止核心转储的创建?

答案1

希望这对某人有帮助。

请注意,如果您已在您的(或您的系统上的任何名称)PrivateTmp=true中设置,这意味着 Apache 实际上会在内部查找类似的内容,Apache 将无法写入该目录,并且您根本不会转储核心(由于tmp 目录具有 700 个仅限根权限)。/usr/lib/systemd/system/apache2.service/tmp/tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/systemd

解决方案是PrivateTmp=false在服务器启动后设置或修改 systemd tmp 目录的权限。

我在这上面浪费了几个小时,直到现在才终于意识到问题所在。

答案2

man core有一个你应该查看的列表。第一个看起来很可能,因为/var/cache/apache2它通常只能由 root 写入,就像是/var/www,它是 debian 上 www-data 用户的常用主目录:

   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).

相关内容