サーバーを移行したとき、WEBページの一部で表示ができない状態になりました。ブラウザで特定のページにアクセスすると「接続がリセットされました」となります。全てのブラウザで同じ状態になりました。エラーになった場所は、Wordpressの管理ページ内の新規プラグインインストールページです。
Apacheのエラーログで内容を確認すると、「Segmentation false」となっていました。
[root@localhost ~]# tail -n 50 /usr/local/apache2/logs/error_log
[Sat Nov 29 18:55:38 2014] [notice] child pid 59914 exit signal Segmentation fault (11), possible coredump in /tmp
Segmentationエラーとは、メモリー上で不具合が起きた時に発生するエラーです。デバックの方法は、coreファイルを出力し、gdbでデバックします。
1. coreファイルの出力
coreファイルを出力すためには、容量が制限がされているかどうか確認をします。制限がされている場合は、制限を解除します。
「ulimit」コマンドで制限の確認
[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0 ←制限されている
制限解除するためファイルを編集する。ファイルの最後に追記しました。
[root@localhost ~]# vi /etc/profile
ulimit -c unlimited > /dev/null 2>&1
[root@localhost ~]# vi /etc/security/limits.conf
root soft core 65536
apache soft core 65536
「ulimit」コマンドで制限の確認
[root@localhost ~]# ulimit -a
core file size (blocks, -c) unlimited ←解除されている
2. Apacheの設定
coreファイルの出力場所を指定します。Apacheの設定ファイル「httpd.conf」の最後に追記します。
[root@localhost ~]# vi /usr/local/apache2/conf/httpd.conf
CoreDumpDirectory /tmp
3. gdbでデバック
[root@localhost ~]# gdb /usr/local/apache2/bin/httpd -c /tmp/core.59929
(gdb) where
4. デバック結果
#17行めの「Curl_ssl_connect」部分が怪しい・・・
ページ内のエラー部分も、外部サイトに通信をしている部分だ・・
以前のサーバーとcurl設定を比較すると、新しいサーバーはopensslを認識してない。
curlのバージョンは・・・? 違う・・
もう一度、opensslとcurlを再インストールして、再起動する
エラーを回復した
(参考サイト)
[PHP] PHP5.4 + Apache 2.4でSegmentation fault digape.com
メモとかそんな感じなやつ