Permission denied: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*:80) failed

php
スポンサーリンク

環境

  • Apache2.4
  • PHP8.0
  • php-fpm

事象

curl -v http://localhost/
で構築したphpのサイトを確認しようとしたところ、503 HTTPステータスエラーを出力した。

error_logを確認したら以下のMSGが出力されていた。

[Fri Mar 22 15:04:56.322375 2024] [proxy:error] [pid 44:tid 249] (13)Permission denied: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*:80) failed
[Fri Mar 22 15:04:56.322408 2024] [proxy_fcgi:error] [pid 44:tid 249] [client 127.0.0.1:56148] AH01079: failed to make connection to backend: httpd-UDS

原因

原因は、/run/php-fpm/www.sock の読み取り、書き込み権が無かったこと。

対処

暫定

/run/php-fpm/www.sock

への読み書きができるように、オーナーとパーミッションを調整する。

オーナーは、

apacheの設定の「User」ディレクティブにかかれているユーザー。

/etc/httpd/conf/httpd.conf
などが設定ファイル。

デフォルト値は、www-dataやapacheになっているはず。

ls -l /run/php-fpm/www.sock

で確認すると、

パーミッションが644 とかになっているはずなので(なっていなければ読み書き権限を設定してね。chmod 644 /run/php-fpm/www.sockとかで)

オーナーだけ変更してあげる。

chown apache.apache /run/php-fpm/www.sock

などで。
→「apache」の部分はapacheのUserやGroupに設定してる値にしてね。

恒久対処

上記だけだと、php-fpmを再起動した際にもとに戻ってしまう。

恒久的な解決策としては、PHP-FPMの設定を変更して、ソケットファイルがapache などのユーザーとして作成されるようにする。

vim /etc/php-fpm/www.conf

user と group を探して変更する。

user = apahce
group = apahce

「apache」の部分は適宜書き換える。

php-fpm再起動してみる。(本番環境では気をつけてね)

systemctl restart php-fpm

して/run/php-fpm/www.sock のユーザーグループがapacheになってたらオッケ。

だがうまくいかないかった。

listen.ownerとlistten.groupをapacheの実行ユーザーにする。

listen.owner = apache
listen.group = apache

/run/php-fpm/ 配下にファイルが作成されなくなった。

systemctl status php-fpm

で確認すると、

Mar 22 15:41:57 860adc1bae3e php-fpm[552]: [22-Mar-2024 15:41:57] WARNING: [pool www] ACL set, listen.owner = 'apache' is ignored
Mar 22 15:41:57 860adc1bae3e php-fpm[552]: [22-Mar-2024 15:41:57] WARNING: [pool www] ACL set, listen.group = 'apache' is ignored

みたいなエラーが。

(僕がやってる環境だと、apacheの実行ユーザーを「apache」じゃない名前にしてるから発生している事象であって、デフォルトの「apache」ユーザーでapacheのユーザーを設定している場合は発生しない事象だと思われる)

;;;listen.acl_users = apache,nginx  コメントアウトー!

systemctl restart php-fpm

rm /run/php-fpm/www.sock

ブラウザアクセス。

うまくいきました。

コメント