ウェブに記載されていないトラブルがあります。 VPS Debian 8 Nginx + PHP7.0-FPMを使用しています。私のサーバーはphp-filesをソースコードで提供し、NginxとPHP7.0-FPMがnix socketsを使用するように構成すると、それらをコンパイルしません。接続)。
つまり、私が実際に行っていることと機能しないこと:
#fastcgi_pass 127.0.0.1:9000;
すべてのホストにこのファイルが含まれているため、各ホストファイルに独自のソケットを設定する必要があります。私はそれをこのようにします:
location ~ '\.php$|^/update.php' { fastcgi_split_path_info ^(.+?\.php)(|/.*)$; fastcgi_pass unix:/var/run/php/example.com.php7.0-fpm.conf; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/example.com/www$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT /var/www/example.com/www; fastcgi_param PHP_ADMIN_VALUE upload_tmp_dir=/var/www/example.com/tmp/upload; fastcgi_param PHP_ADMIN_VALUE session.save_path=/var/www/example.com/tmp/sessions; }
メインのphp7.0-fpmプールファイル/etc/php/7.0/fpm/pool.d/www.confを編集してソケットをリッスンします(ただし、ここでなぜ必要なのか理解できません)。
listen = /var/run/php/php7.0-fpm.sock
私のサイトのプールファイル/etc/php/7.0/fpm/pool.d/example.com.confを編集して、独自のソケットを設定します(ここで私は必要だと思います):
listen = /var/run/php/example.com.php7.0-fpm.sock
サービスを再起動します。
サービスnginx再起動&&サービスphp7.0-fpm再起動
これにより、任意のサイトページにアクセスしたときのように、index.phpがダウンロードされます。
しかし、tcpソケットを使用する場合、fastcgi_pass 127.0.0.1:9000;
正常に動作します。
過度に複雑なlocation
はどうなっていますか?
location ~ '\.php$|^/update.php' {
あなたのリクエストは実際にはこれと一致しないと思います。
本当に必要なのは:
location ~ \.php$ {
fastcgi_pass
のファイル名が間違っているようです:
fastcgi_pass unix:/var/run/php/example.com.php7.0-fpm.sock;
Php-fpmが実行中であり、ソケットファイルが存在し、nginxがファイルにアクセスするための適切な権限を持っていることを確認してください。 selinuxをインストールして適用している場合は、ログをチェックして、nginxによるファイルへのアクセスがブロックされていないかどうかを確認する必要がある場合もあります。
Php-fpm側では、pool.d
のこれらの構成ファイルはそれぞれ、PHP実行可能ファイルの個別のプールであり、それぞれに独自のソケットが必要です。www.conf
は「メイン」ではありません"構成ファイル。これは完全に独立したプロセスのプールであり、使用しない場合は無効化または削除する必要があります。両方のプールが同じソケットを使用するように構成されているため、ここで競合が発生します。
Unixソケットには権限があります
Phpとnginxを接続するソケットは、設定に従ってphp7.2-fpmサービスによって作成されます
Sudo nano /etc/php/7.2/fpm/pool.d/www.conf
このファイルは
listen = /run/php/php7.2-fpm.sock
listen.owner = www-data
listen.group = www-data
このサービスを開始/再開すると
Sudo systemctl restart php7.2-fpm.service
指定された所有者とグループでソケットを表すファイルを作成します
ls -la /run/php
しかし、Nginxはデフォルトで別のユーザーを使用しています、あなたはそれを検証することができます
Sudo nano /etc/nginx/nginx.conf
ユーザーnginx;
権限をどのように調整するかは、あなた次第です。ソケットファイルにより多くのアクセス許可を与えるか、リッスンユーザーを変更するか、nginxユーザーを変更します。答えを選択します。