J'ai un projet simple avec une structure de répertoire
Je suis en train de configurer nginx config pour mon site drupal, et pour le fastcgi_pass
j'utilise 127.0.0.1:9000
mais je veux utiliser un socket Unix comme suggéré dans cette conf:
# PHP 7 socket location.
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
mais je ne trouve pas php/php7.0-fpm.sock;
J'ai le chemin suivant dans ma distribution centos
/var/run/php-fpm/php-fpm.pid
Vérifiez le php-fpm config où le socket sera créé avec:
$ cat /etc/php/7.0/fpm/pool.d/www.conf
Recherchez listen
, par exemple:
listen = /run/php/php7.0-fpm.sock
php-fpm crée le fichier de socket après que vous avez lancé le processus.
Sudo service php7.0-fpm stop
Sudo service php7.0-fpm start
Vérifiez le répertoire si le fichier de socket a été créé:
$ cd /run/php && ls -la
Commencez par vérifier si php-fpm
est en cours d’exécution sur votre système. Pour ce faire, vous pouvez utiliser pgrep
par exemple:
# 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
Dans ce cas, il indique qu’il est opérationnel et qu’il utilise le fichier de configuration /etc/php-fpm.conf
. Avant de vérifier le fichier de configuration et d'essayer de vérifier la directive listen =
, vous pouvez rapidement consulter /proc/net/unix
, par exemple:
# grep php /proc/net/unix
Ce qui peut retourner quelque chose comme:
ffff8800bfb2f400: 00000002 00000000 00010000 0001 01 28561 /tmp/php-fpm.sock
Dans ce cas, il montre que le chemin de la socket php-fpm est situé dans /tmp/php-fpm.sock
, celui-ci pouvant être vérifié en vérifiant la conf dans /etc/php-fpm.d/www.conf
, dans le cas présent: listen= /tmp/php-fpm.sock
Si vous n'obtenez aucun résultat et que php-fpm
est opérationnel, vérifiez la configuration qui utilise les valeurs par défaut en listant sur un socket TCP:
listen = 127.0.0.1:9000
Quelque chose que vous pourriez changer pour écouter sur une socket Unix comme votre conf suggéré:
listen = /var/run/php/php7.0-fpm.sock
Dans certaines distributions Linux, ceci est normalement utilisé:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
Après avoir modifié votre configuration, n'oubliez pas de redémarrer les services systemctl restart php-fpm
. Pour vérifier que le socket a bien été créé, vous pouvez faire:
$ file /var/run/php/php7.0-fpm.sock
Si socket existe si devrait imprimer quelque chose comme ceci:
/var/run/php/php7.0-fpm.sock: socket
vous pouvez le voir en courant
$ ss --unix |grep 'php'
Il est probable qu'une ancienne libpcre3 soit installée et satisfasse la dépendance du paquet php7.0, mais seul le paquet le plus récent de la bibliothèque fournit pcre_jit_stack_free.
Si tel est le cas, installez libpcre3 avec apt-get, et le tour est joué.
Réf .: https://github.com/oerdnj/deb.sury.org/issues/372
J'espère que ceci vous aide.