Где находится php7.0-fpm.sock

У меня есть простой проект со структурой каталогов

Я настраиваю конфигурацию nginx для моего сайта drupal, а для fastcgi_pass я использовал 127.0.0.1:9000 но я хочу использовать unix-сокет, как это предлагается в этом conf:

 # 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

Ответ 1

Проверьте конфигурацию php-fpm, где сокет будет создан:

$ cat/etc/php/7.0/fpm/pool.d/www.conf

Посмотрите listen, например:

listen =/run/php/php7.0-fpm.sock

php-fpm создает файл сокета после запуска процесса.

sudo service php7.0-fpm stop
sudo service php7.0-fpm start

Проверьте каталог, если был создан файл сокета:

$ cd/run/php && ls -la

Ответ 2

Сначала проверьте, работает ли 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- /tmp/php-fpm.sock находится в /tmp/php-fpm.sock который можно проверить, проверив conf в /etc/php-fpm.d/www.conf в этом случай: listen=/tmp/php-fpm.sock

Если вы не получите никакого результата, а php-fpm запущен и запущен, проверьте конфигурацию, которую вы можете найти, используя значения по умолчанию, путем перечисления в сокете TCP:

listen = 127.0.0.1:9000

Что-то, что вы могли бы изменить, чтобы прослушивать Unix-сокет, как ваш предлагаемый conf:

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

Ответ 3

вы можете увидеть его, запустив

$ ss --unix |grep 'php' 

Ответ 4

Вероятно, установлен более старый libpcre3 и удовлетворяет зависимость в пакете php7.0, но только новый пакет библиотеки предоставляет pcre_jit_stack_free.

Если это так, сделайте apt-get install libpcre3, и вам хорошо идти.

Ref.: https://github.com/oerdnj/deb.sury.org/issues/372

Я надеюсь, это поможет вам.

Ответ 5

Используйте это:

cat /etc/php/7.0/fpm/pool.d/www.conf | grep 'listen ='

Output example: listen =/run/php/php7.2-fpm.sock

Или для универсальных php-версий:

cat /etc/php/$(php -r "echo PHP_VERSION;" | grep --only-matching --perl-regexp "7.\d+")/fpm/pool.d/www.conf | grep 'listen ='