segfault를 생성 할 때 아파치에서 코어 덤프를 얻는 방법에 대한 온라인의 여러 위치에서 지침을 따랐지만 여전히 덤프 생성을 거부합니다.
나는 가지고있다:
CoreDumpDirectory
지시문을httpd.conf
파일에 추가하고 로 설정/tmp
- 실행
ulimit -c unlimited
- 사용하여 덤프 패턴 제공
echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
- 또한 달렸다
echo 0 > /proc/sys/kernel/core_uses_pid
Httpd가 다시 시작되었지만 여전히 덤프가 작성되지 않았습니다.
내가 생각에 CentOS 5.8 64를 실행하는거야 httpd-2.2.3-65.el5.centos.3
및php-5.3.20-13.el5.art
어떤 도움이라도 대단히 감사하겠습니다!
답변
내 대답은 이것입니다 :
-
지시문을 다음과 같이 설정하십시오.
CoreDumpDirectory /tmp/mycoredump
-
디렉토리를 작성하십시오.
mkdir -p /tmp/mycoredump
-
www-data 또는 httpd 디렉토리에 소유권을 지정하십시오.
chown -R www-data:www-data /tmp/mycoredump
-
권한을 다음으로 설정하십시오.
chmod 777 /tmp/mycoredump
-
Apache를 다시 시작하십시오.
service apache2 restart
답변
아파치가 실제로 내부에서 찾는 것을 의미하는 (또는 시스템에서 호출 된 무엇이든) PrivateTmp=true
설정 하면 아파치는 해당 디렉토리에 쓸 수 없으며 코어가 전혀 덤프되지 않습니다. 받는 tmp 디렉토리 700 루트 전용 파마를 가짐)./usr/lib/systemd/system/apache2.service
/tmp
/tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/
systemd
해결책은 PrivateTmp=false
서버가 시작된 후 systemd tmp 디렉토리의 권한을 설정 하거나 수정하는 것입니다.
나는 지금 막 문제가 무엇인지 마침내 깨닫기 위해 몇 시간을 낭비했습니다.