PHP-FPM - エラー 503 - Unix ドメイン ソケットへの接続に失敗しました

PHP-FPM - エラー 503 - Unix ドメイン ソケットへの接続に失敗しました

サーバー上で次のエラーが発生します (CentOs 7):

[proxy:debug] proxy_util.c(2209): [client 80.251.245.153:61902] AH00944: connecting fcgi://127.0.0.1/data/webs/dev/index.php to 127.0.0.1:8000
[proxy:debug] proxy_util.c(2246): [client 80.251.245.153:61902] AH02545: fcgi: has determined UDS as /tmp/php56-fpm.sock
[proxy:debug] proxy_util.c(2418): [client 80.251.245.153:61902] AH00947: connected /data/webs/dev/index.php to httpd-UDS:0
[proxy:error] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /tmp/php56-fpm.sock (*) failed
[proxy_fcgi:error] AH01079: failed to make connection to backend: httpd-UDS
[proxy:debug] proxy_util.c(2171): AH00943: FCGI: has released connection for (*)

ソケットは存在します。権限を 777 に変更しようとしましたが、機能しません。

 ls -l /tmp/php56-fpm.sock
-rw-rw----. 1 apache apache 0 Feb 17 16:11 /tmp/php56-fpm.sock

PHP-FPM www.conf listen 設定 (完全なファイルはここにあります:https://pastebin.com/uD5GsMna):

listen=/tmp/php56-fpm.sock

仮想ホスト:

<VirtualHost *:80>
   ServerName dev.stavebninyfranek.com
   DocumentRoot "/data/webs/dev"
   <FilesMatch "\.php$">
     SetHandler  "proxy:unix:/tmp/php56-fpm.sock|fcgi://127.0.0.1"
   </FilesMatch> 
 </VirtualHost>

私の設定ファイルは (httpd.conf) です:https://pastebin.com/XS6cDuFQ

ソケットを変更し、権限を apache:apache ユーザーに変更しようとしましたが、どこに問題があるのか​​わかりません。

ありがとう

答え1

これは Apache の systemd 構成によって発生する可能性があります。たとえば Centos 7 では、デフォルトではサービスは次のように構成されています。

PrivateTmp=true

つまり、/tmp 内の独自のサブディレクトリが /tmp として表示されるため、他のプログラムによって追加された /tmp 内のファイルは表示されません。解決策としては、php-fpm ソケットに /tmp を使用しないようにすることです (上記を false に設定するよりも安全です)。

(少なくとも 1 つのケースでは Debian 派生版が使用されていることは認識していますが、systemd も使用されています!)

ポーリー。

答え2

ユーザーとグループを現在のApacheユーザーに変更します

/etc/php-fpm.d/www.conf 

** ユーザーとグループは同一である必要があります/etc/http/conf/http.conf

次に実行する

chown -R user.user /run/php-fpm/www.conf

** ユーザーへの変更

私は Debian ユーザなので、上記は CentOS 用だと思います。これは、php8 sock 権限の問題によって発生する「503 エラー サービスが利用できません」という問題の解決策の 1 つです。したがって、Apache の sock は次の場所にあります。

chown -R user.user /var/run/php/php8.1-fpm.sock

答え3

Apache を 2.4.10 から 2.4.24 にアップデートした後、同じ問題が発生しました。古い Apache では、 のソケットで fcgi への接続が機能しました/tmpが、新しい Apache ではエラーが発生していました。(2)No such file or directoryソケットを に移動すると、/var/run問題は解決しました。

のソース コードを見るとmod_proxy、新しい Apache ではパスは として指定されたパスを基準にする必要があることがわかりましたDefaultRuntimeDir。私の構成では、これは で設定されており/etc/apache2/apache2.conf、 からの定義もいくつか使用されています/etc/apache2/envvars

答え4

私はこの問題を解決しました。

php5-fpm.sock を実行します。

の代わりに/tmp/使用すれば動作します。しかし、 の代わりに別のフォルダーを使用できないのはなぜでしょうか/var/run/?

関連情報