web-dev-qa-db-ja.com

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リッスン設定(完全なファイルはこちら: 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
Pavel Novák

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

PrivateTmp=true

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

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

ポーリー。

2
paulie

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からの定義も使用します。

0
eppesuig

私はこの問題を解決しました、私が使用したとき

/var/run/php5-fpm.sock

/tmp/とその動作の代わりに。しかし、なぜ/var/run/の代わりに別のフォルダを使用できないのですか?

0
Pavel Novák

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

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

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

次に実行します

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

**ユーザーに変更

0