J'ai suivi des instructions de nombreux endroits en ligne sur la façon d'obtenir un vidage de base d'Apache lorsqu'il produise un Segfault, mais il refuse toujours de générer le décharge.
J'ai:
CoreDumpDirectory
dans le httpd.conf
Fichier et définissez-le sur /tmp
ulimit -c unlimited
echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
echo 0 > /proc/sys/kernel/core_uses_pid
Httpd a été redémarré, mais aucun déchargement n'a été créé.
Je cours Centos 5.8 x64 avec httpd-2.2.3-65.el5.centos.3
et php-5.3.20-13.el5.art
Toute aide serait très appréciée!
Ma réponse est la suivante:
Configurez la directive comme suit
CoreDumpDirectory /tmp/mycoredump
Créer le répertoire:
mkdir -p /tmp/mycoredump
Attribuer la propriété à l'annuaire www-Data ou httpd
chown -R www-data:www-data /tmp/mycoredump
Définir les autorisations à:
chmod 777 /tmp/mycoredump
Redémarrez Apache:
service Apache2 restart
Notez que si vous avez PrivateTmp=true
défini dans votre /usr/lib/systemd/system/Apache2.service
(ou quoi que ce soit appelé votre système), signification Apache cherche réellement /tmp
à l'intérieur de quelque chose comme /tmp/systemd-private-c27fc5b152d546159d675e170641529b-Apache2.service-IcEt0m/
, Apache ne sera pas capable d'écrire sur cette Dir et vous n'obtiendrez pas de nœuds du tout (en raison du répertoire systemd
TMP ayant 700 permanentes de racines).
La solution est de définir PrivateTmp=false
ou modifier l'autorisation du répertoire SystemD TMP après le démarrage du serveur.
J'ai gaspillé des heures à ce sujet pour seulement tout simplement réaliser que le problème était.