J'ai suivi des instructions de nombreux endroits en ligne sur la façon d'obtenir un vidage de mémoire d'Apache lorsqu'il produit un défaut de segmentation, mais il refuse toujours de générer le vidage.
J'ai:
- Ajout de la
CoreDumpDirectory
directive dans lehttpd.conf
fichier et définissez-la sur/tmp
- Réalisé
ulimit -c unlimited
- A fourni le modèle pour les vidages en utilisant
echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
- Aussi couru
echo 0 > /proc/sys/kernel/core_uses_pid
Httpd a été redémarré, mais toujours aucun vidage créé.
J'utilise CentOS 5.8 x64 avec httpd-2.2.3-65.el5.centos.3
etphp-5.3.20-13.el5.art
Toute aide serait très appréciée!
httpd
segmentation-fault
dump
chrismcb
la source
la source
CoreDumpDirectory
à/tmp/dumps
et largué à/tmp
... maintenant avec le débogageRéponses:
Ma réponse est la suivante:
Configurez la directive comme suit
CoreDumpDirectory /tmp/mycoredump
Créez le répertoire:
mkdir -p /tmp/mycoredump
Attribuer la propriété au répertoire www-data ou httpd
chown -R www-data:www-data /tmp/mycoredump
Définissez les autorisations sur:
chmod 777 /tmp/mycoredump
Redémarrez Apache:
service apache2 restart
la source
/tmp
toute façon!chmod 777
quoi que ce soitNotez que si vous avez
PrivateTmp=true
défini votre/usr/lib/systemd/system/apache2.service
(ou quel que soit son nom sur votre système), ce qui signifie qu'Apache recherche réellement à l'/tmp
intérieur de quelque chose comme/tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/
, Apache ne pourra pas écrire dans ce répertoire et vous ne recevrez pas de cœurs du tout (en raison dans lesystemd
répertoire tmp ayant 700 perms root uniquement).La solution consiste à définir
PrivateTmp=false
ou à modifier l'autorisation du répertoire systemd tmp après le démarrage du serveur.J'ai perdu des heures là-dessus pour me rendre compte à peine du problème.
la source