近日新開的vps都是centos6的,按照往常一樣配置好web伺服器,如下:
httpd/2.2.15php/5.3.3 with eAccelerator with Zend Guard Loader v3.3
修改好apache設定檔後,習慣性的先檢查設定檔
/etc/init.d/httpd configtest
一切正常,然後重新載入設定檔
/etc/init.d/httpd reload
本來應該是一切無誤的,開啟網址測試,竟然無法開啟,檢查apache運行狀態,竟然掛了
/etc/init.d/httpd status
看來是有問題,百度&google一陣後無果,手動開啟apache,測試了下,只有reload才會掛掉,暫且擱置了,先把網站上線再說。運行了幾日,毫無突然掛掉的跡象,僅僅在error_log中看到有大量層級為notice的錯誤如下:
[Wed Apr 09 00:10:17 2014] [notice] child pid 14786 exit signal Segmentation fault (11)
今天又上新的vps,同樣配置後,以上現象又重現,然後嘗試找出原因。
首先把apache的錯誤記錄檔調到debug層級,嘗試reload命令後,錯誤依舊,但日誌記錄並未有異常。
然後才想起查看下系統日誌:
tail -f /var/log/messages
查看到有2條跟php有關的錯誤:
Apr 9 15:57:15 localhost kernel: php[4924]: segfault at 65fd47 ip 0065fd47 sp bfa63660 error 14 in libkrb5.so.3.3[765000+d6000]Apr 9 16:00:20 localhost kernel: php[4934]: segfault at d8ed47 ip 00d8ed47 sp bfbaa830 error 14 in libpthread-2.12.so[f22000+17000]
然後第一想到了zendGuardLoader這東西,在php.ini裡注釋掉之前加入的zend配置,重啟apache,再行測試,一切又無異常了。
由此看來,可能由於rpm安裝的php本身的一些問題,再加上zendguardLoader,產生了異常,所以導致apache跟著受了影響。
這塊知道的不多,所以只能是這麼說了,瞭解這塊的可以指教一下。