Httpd
segfaulting時如何從apache獲取核心轉儲
我已按照線上許多位置的說明,了解如何在 apache 產生段錯誤時從 apache 獲取核心轉儲,但它仍然拒絕生成轉儲。
我有:
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 x64
httpd-2.2.3-65.el5.centos.3
和php-5.3.20-13.el5.art
任何幫助將非常感激!
我的回答是這樣的:
- 設置指令如下
CoreDumpDirectory /tmp/mycoredump
2. 創建目錄:
mkdir -p /tmp/mycoredump
3. 將所有權分配給目錄 www-data 或 httpd
chown -R www-data:www-data /tmp/mycoredump
4. 將權限設置為:
chmod 777 /tmp/mycoredump
5. 重啟阿帕奇:
service apache2 restart
請注意,如果您已
PrivateTmp=true
在您的/usr/lib/systemd/system/apache2.service
(或系統上呼叫的任何內容)中進行設置,這意味著 Apache 實際上會在/tmp
內部查找類似/tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/
到systemd
具有 700 個 root 權限的 tmp 目錄)。解決方案是在伺服器啟動後設置
PrivateTmp=false
或修改systemd tmp目錄的權限。我在這上面浪費了幾個小時,直到現在才終於意識到問題所在。