FreeBSD+Apache+PHP7コアダンプ

FreeBSD+Apache+PHP7コアダンプ

var/log/messsages にコアダンプが表示された。

kernel: pid 49651 (httpd), jid 0, uid 80: exited on signal 10
kernel: pid 49649 (httpd), jid 0, uid 80: exited on signal 10
kernel: pid 49610 (httpd), jid 0, uid 80: exited on signal 10
kernel: pid 49626 (httpd), jid 0, uid 80: exited on signal 10
kernel: pid 49760 (httpd), jid 0, uid 80: exited on signal 10

/var/log/httpd-eror.logを見ると以下のようになっていた。

[access_compat:error] [pid 36957] [client 157.55.39.62:5907] AH01797: client denied by server configuration:
[Sun Jul 19 07:28:37.757401 2020] [core:notice] [pid 6262] AH00052: child pid 37508 exit signal Bus error (10)
[Sun Jul 19 07:30:46.052387 2020] [core:notice] [pid 6262] AH00052: child pid 37554 exit signal Bus error (10)
[Sun Jul 19 07:33:32.102367 2020] [core:notice] [pid 6262] AH00052: child pid 37606 exit signal Bus error (10)
[Sun Jul 19 07:35:05.879909 2020] [access_compat:error] [pid 37711] [client 207.46.13.209:20594] AH01797: client denied

AH1797はserver configuration Errorとなっている。
Apache2.2までとApache2.4ではアクセス制限の書式が異なり、原因は当該ディレクトリに設置した.htaccessファイルだと思われる。

httpd.confは以前のものを流用せずに、apache2.4のものを編集したので以下のような記述は存在しない。

<Directory />
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

しかし.htaccessは従来のままであり、アクセス制限の書式が異なっていた。
そこでApache2.4の書式に合わせて以下のように書き直した。

Require all denied
Require host .jp

しかしエラーは消えなかった。
アクセス制限は他のディレクトリでも行っているのだが、それはエラーが出ない。
しかし.htaccessの書式程度のことでコアダンプに至るのだろうか?
理由は不明なるも、対策を急ぎたかったので.htaccessを削除した。
これによってコアダンプは発生しなくなった。

もう一つコアダンプを発生させている原因が見つかった。
PHPのプログラムである。
これは関数自体が無応答になるので、.htaccessの時よりも”それっぽい”感じがする。
鹿も再現が容易なので、ログを見ながら関数をコールすれば良い。

原因が掴めない時にはApacheのhttpd-confから以下の行をコメントアウトする。

LoadModule php7_module libexec/apache24/libphp7.so

これでコアダンプがなくなればPHP系に原因がある可能性が高い。

エラーの状況でserver configurationとexit signal Bus error (10)が出ていたのだが、.htaccessの削除で双方共に発生しなくなった。
なお.htaccessの制限機能自体は、コアダンプ発生時にも正常に動作していた。

ブログランキング・にほんブログ村へ