-編集-これがうまくいくかどうか疑問に思いますchmod 777 /var/run/php-fastcgi/php-fastcgi.socket
。 www-data、php-www(またはroot)ではない場合、ソケットにアクセスしたい人は誰ですか? |
-edit2-chown www-data:$FASTCGI_GROUP $SOCKET
以下のスクリプトの末尾(すぐ後ろspawn-fcgi
)に追加して問題を解決しましたが、www-dataがphp-wwwグループにあるという事実が混乱しています。なぜ所有者でなければならないのですか? FASTCGI_USER を www-data に変更し直しました。なぜなら、それは目的が失われるからです(PHPファイルが私のすべてのファイルをwww-dataとしてアクセスできるようにしますが、これは望ましくありません)。
本質的に私が望むのは、PHPプロセスをwww-dataではないものにし、それが破損しても被害が私が所有しているごく少数のPHPサイトに制限されるようにすることです。私がしたことは、ユーザーphp-wwwを作成し、そのグループをwww-dataに追加することでした。 www-dataでログインするとphp-wwwのすべてのエントリにアクセスできますが、php-wwwは私のPHPサイト以外には何もアクセスできません。完璧。
php+nginxを実行しました。しかしそれをいかに変えるかは私にとって問題になった。フォルダの所有権を変更するinit.dスクリプトにwww-dataへの言及があります。問題ありません。 php-wwwに変更しました。それは問題ではありません。
問題はスポーンスクリプトにあります。
#!/bin/bash
FASTCGI_USER=php-www
FASTCGI_GROUP=php-www
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
ユーザー/グループ行はwww-dataと言いましたが、今はphp-wwwに変更しました。
私はphp-fastcgiとnginxを起動しました。私のウェブサイトにアクセスすると、502無効なゲートウェイエラーが発生します。 nginxログを見ると、次の行が表示されます。
connect() to unix:/var/run/php-fastcgi/php-fastcgi.socket failed (13: Permission denied) while connecting to upstream
許可が拒否されました! ? !なぜ! ? ! www-dataにはphp-wwwグループがあり、stat
フォルダとソケットには所有者とグループphp-wwwが表示されます。ボットphp-wwwとwww-dataを使用してPHPファイルにアクセスできます。権限エラーが発生するのはなぜですか?私は何が間違っていましたか?
私のコースを見たいなら
# ps aux | egrep "php|www"
プログラム
www-data 548 0.0 0.1 1908 492 ? Ss 18:08 0:00 /usr/sbin/fcgiwrap
www-data 586 0.0 0.1 1908 488 ? Ss 18:08 0:00 /usr/sbin/fcgiwrap
php-www 1611 0.0 1.9 19312 5020 ? Ss 18:20 0:00 /usr/bin/php5-cgi
php-www 1612 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1613 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1614 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1615 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1616 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1617 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
www-data 1776 0.0 0.6 5428 1684 ? S 18:27 0:00 nginx: worker process
php-www 1967 0.0 1.9 19312 5020 ? Ss 18:40 0:00 /usr/bin/php5-cgi
php-www 1968 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1969 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1970 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1971 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1972 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1973 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
root 2110 0.0 0.2 3300 736 pts/1 S+ 18:55 0:00 egrep php|www
答え1
ソケットは、グループの読み取りまたは書き込みが不可能な場合があります。
答え2
ソケット権限の変更に加えて、nginx設定を編集してuser www-data
独自のユーザー名に変更することもできます。
答え3
PHP CGIソケットファイルをタッチします(空のファイルを作成)。権限を777に変更して開始します。php-fastcgi
答え4
追加する各ユーザーセッションのfpmプール構成ファイルにこの行を追加します。
listen.mode = 0666
このように/opt/php-5.6.3/etc/fpm.d/user1.conf
[user1]
listen.owner = user1
listen.group = user1
user = user1
group = user1
listen = /opt/php-5.6.3/sockets/user1.sock
listen.mode = 0666
これにより、ソケットを読むことができます。 chmodを介してソケット権限を変更することは一時的な解決策です。サービスを再起動すると、以前の状態に変わるためです。
必要なものに変更してください。良い0660グループと所有者にのみ権限を追加してください。しかし、0666それはすべてです。