ディレクトリ構造を持つ単純なプロジェクトがあります
drupalサイト、およびfastcgi_pass
サイトにnginx configを設定しています。127.0.0.1:9000
を使用していますが、このconfで提案されているようにUNIXソケットを使用します。
# PHP 7 socket location.
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
しかし、php/php7.0-fpm.sock;
が見つかりません
CentOSディストリビューションには次のパスがあります
/var/run/php-fpm/php-fpm.pid
ソケットを作成するphp-fpm configを確認します。
$ cat /etc/php/7.0/fpm/pool.d/www.conf
listen
を探します。例:
listen = /run/php/php7.0-fpm.sock
php-fpmソケットファイルを作成しますafterプロセスを開始しました。
Sudo service php7.0-fpm stop
Sudo service php7.0-fpm start
ソケットファイルが作成された場合、ディレクトリを確認します。
$ cd /run/php && ls -la
最初にphp-fpm
がシステムで実行されているかどうかを確認します。これを行うには、たとえば次のようにpgrep
を使用できます。
# pgrep -fa php-fpm
5666 php-fpm: master process (/etc/php-fpm.conf)
5667 php-fpm: pool www
5668 php-fpm: pool www
5669 php-fpm: pool www
5670 php-fpm: pool www
5671 php-fpm: pool www
この場合、設定ファイル/etc/php-fpm.conf
が稼働中であることを示しています。構成ファイルをチェックしてlisten =
ディレクティブをチェックする前に、次のようにすばやく /proc/net/unix
を調べることができます。
# grep php /proc/net/unix
次のような結果が返される場合があります。
ffff8800bfb2f400: 00000002 00000000 00010000 0001 01 28561 /tmp/php-fpm.sock
この場合、php-fpmソケットのパスが/tmp/php-fpm.sock
にあることを示します。この場合、/etc/php-fpm.d/www.conf
のconfを確認することで確認できます:listen= /tmp/php-fpm.sock
結果が得られず、php-fpm
が実行されている場合、設定を確認することで、TCP=
listen = 127.0.0.1:9000
提案されたconfのようなUnixソケットでリッスンするために変更できるもの:
listen = /var/run/php/php7.0-fpm.sock
一部のLinuxディストリビューションでは、通常これが使用されます。
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
構成を変更した後、サービスsystemctl restart php-fpm
を再起動することを忘れないでください。ソケットが作成されたことを確認するには、次のようにします。
$ file /var/run/php/php7.0-fpm.sock
ソケットが存在する場合、次のようなものを出力する必要があります。
/var/run/php/php7.0-fpm.sock: socket
実行して見ることができます
$ ss --unix |grep 'php'
古いlibpcre3がインストールされ、php7.0パッケージの依存関係を満たしている可能性がありますが、新しいライブラリパッケージのみがpcre_jit_stack_freeを提供します。
この場合は、apt-get install libpcre3を実行すると、準備完了です。
参照: https://github.com/oerdnj/deb.sury.org/issues/372
これがあなたのお役に立てば幸いです。