今日、vpsをphp5.3からphp5.4にアップグレードしました。nginx+php-fpmのアーキテクチャを使用し、nginxはphp-fpmのsocksファイルを介して接続しました。
結果はエラーです:
上流への接続中に unix:/tmp/php-cgi.sock へのconnect() が失敗しました (13: 許可が拒否されました)
/tmp/php-cgi.sock を確認したところ、所有者がファイルのディレクトリは root であり、nginx と php-fpm はどちらも www ユーザーによって実行されます。論理的に言えば、この sock ファイルも www である必要があります。
後で、php-fpm.conf で次の設定を見つけました。
; UNIX ソケットが使用されている場合は、Web サーバーからの接続を許可するために読み取り/書き込み権限を設定する必要があります。
; BSD 派生システムは、権限に関係なく接続を許可します
; デフォルト値: ユーザーとグループは 0660 に設定されます
;listen.owner = www
;listen.group = www
;listen .mode = 0660
これは奇妙です。説明によると、デフォルトではユーザーとグループの設定項目を使用して権限を設定する必要がありますが、実際にはそうではありません。いずれの場合も、ここで構成を手動で指定することで問題を解決できます。
;デフォルト値: ユーザーとグループは実行ユーザーとして設定されます
; モードは 0660 に設定されます
listen.owner = www
listen.group = www
;listen.mode = 0660