システムの更新後、PHP Nginxで実行されているアプリの不正なゲートウェイエラーが発生しました。
1 unix:/var/run/php-fcgi-vhostname-php-fcgi-0.sockへのconnect()は、アップストリーム、クライアント:xx.xxx.xx.xx、サーバー:localhostへの接続中に失敗しました(13:許可が拒否されました) 、リクエスト: "GET/HTTP/1.1"、アップストリーム: "fastcgi:// unix:/var/run/php-fcgi-vhostname-php-fcgi-0.sock:"、ホスト: "xx.xx.xx。 xx "
この問題は、使用されているphp-fpmソケットの不適切なアクセス許可が原因で発生します。実際、/var/run/php-fcgi.sock
が所有するroot:root
が表示されますが、nginxおよびphp-fpmはユーザーwww-data
として使用します。
私はすでに/etc/php-fpm.d/www.conf
でphp-fpmの設定を編集しました:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
しかし、それは問題を解決せず、nginxとphp-fpmを再起動すると、ユーザー/グループとしてroot:root
でソケットが作成されます。
修正方法を見つけた唯一の方法は、ソケットの所有者を手動でwww-data:www-dataに変更することです。しかし、これは実際のソリューションではありません。サービスを再起動するたびに、再度適用する必要があるからです。
この問題を修正するにはどうすればよいですか? CentOS 6.5を使用しています
Ajenti-Vを使用して、仮想ホストとPHP-FPMを構成します。ウェブサイト/ vhostごとに新しいソケットを作成し、/etc/php-fpm.conf
で設定されます
これらの構造は次のとおりです。
[vhostname-php-fcgi-0]
user = www-data
group = www-data
listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
各エントリにこれらの文字列を追加すると:
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
すべてが正しく機能します。
Www.confは含まれていないようです(たぶん?)。これは私のphp-fpm.confです:
[global]
pid = /var/run/php-fpm/php-fpm.pid
error_log = /var/log/php5-fpm.log
[global-pool]
user = www-data
group = www-data
listen = /var/run/php-fcgi.sock
pm = dynamic
pm.start_servers = 1
pm.max_children = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 5
[vhostname-php-fcgi-0]
user = www-data
group = www-data
listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
NGINXはユーザーnginx
として実行され、php5-fpmはユーザーwww-data
として実行されます。 nginx
をグループwww-data
に追加するだけで問題は解決し、nginxは/var/run/php5-fpm.sock
にアクセスできます。 Ubuntu 14.04、nginx 1.7.10、PHP 5.5.9-1ubuntu4.6(fpm-fcgi):
$ Sudo usermod -aG www-data nginx
みなさん!それも私の問題です。 fpmユーザーをvagrantに変更し、プールを再起動すると...完了です!ここに私のconfが来ます:
user = vagrant
group = nginx
listen.owner = vagrant
listen.group = nginx
listen.mode = 0660
それが誰かを助けることを願っています。
私のインストールでは、Centos 7.5、Apache php 7.1およびphp 5.6で、毎回php56-php.fpm.sock(rootが所有)のアクセス許可を手動で修正しなければならないという同じ問題がありました。リブート。
Php56の私の設定はここにあり、インストール時に異なる場合があります:/ opt/remi/php56/root/etc/php-fpm.d/www.conf
ファイル内のこのコメントセクションを変更しました。
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
これで、再起動後、すべてが正常になり、ソケットファイルに対する正しい権限が付与されます。 listen.modeについてはわかりません。 66も機能すると思います。
こんにちは。Ubuntuサーバー14.04 nginxとphp5-fpmの場合、rootによるphp-fpmソケット所有者の問題は、ファイル/etc/php5/fpm/pool.d/www.confを編集して解決しました台詞:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
明確なインストールから、nginxの所有者とグループはwww-dataです。ベストプラクティスは、/ etc/nginx/nginx.confを見て、最初の行が次のとおりであることを確認することだと思います。
user www-data;
そして、デフォルトのユーザーであるChearsを使用してください!
それ以外は何でもできます
My Config Vagrant/Ubuntu 16/Nginx 1.13/PHP-FPM 7.1
Sudo vi /etc/nginx/nginx.conf
最初の行を変更しますuser nginx => user www-data
service nginx restart
ここにlisten.acl_users
ディレクティブはコメント化する必要があります。そうでない場合は、listen.owner
およびlisten.group
値:
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = Apache,nginx