Comment redémarrez-vous php-fpm?


184

Je dois recharger mon fichier php.ini et il n'y a rien dans la boîte de dialogue d'aide pour le redémarrer.

Réponses:


335

Note : préfixe sudosinon root

  • Utilisation directe des scripts SysV Init:

    /etc/init.d/php-fpm restart    # typical
    /etc/init.d/php5-fpm restart   # debian-style
    /etc/init.d/php7.0-fpm restart # debian-style PHP 7
    
  • Utilisation du script de service

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Utiliser Upstart (par exemple, Ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Utilisation de systemd (serveurs plus récents):

    systemctl restart php-fpm.service    # typical
    systemctl restart php5-fpm.service   # uncommon
    systemctl restart php7.0-fpm.service # uncommon PHP 7
    

Ou quel que soit l'équivalent sur votre système.


2
Qu'en est-il sur un Mac? php-fpm a été installé avec homebrew. which php-fpmdonne /usr/local/sbin/php-fpm.
Hobbes3

6
@ hobbes3 try brew services restart php56(si vous obtenez une erreur indiquant qu'aucune formule n'est disponible, essayez une version différente, par exemple php5 ou php55). Si vous n'avez pas installé de services d'infusion, vous devez l'installer lors de la première utilisation.
Doktor J

Tout ce qui précède n'a pas fonctionné pour moi, mais cela a fonctionné: service php-fcgi-mydomain-com restartEt je devais le répéter pour chaque domaine à partir de sites activés
Ilyich

Celui-ci était le bon pour moi (centOs):systemctl reload php70-php-fpm
4wk_

Je suis sur Ubuntu 16.04 et cela semblait fonctionner: systemctl restart php5.6-fpm.service
relipse

30

Pour Mac OS X, voici ce que je fais:

Faire un script /usr/local/etc/php/fpm-restart:

#!/bin/sh

echo "Stopping php-fpm..."
launchctl unload -w ~/Library/LaunchAgents/homebrew-php*.plist

echo "Starting php-fpm..."
launchctl load -w ~/Library/LaunchAgents/homebrew-php*.plist

echo "php-fpm restarted"
exit 0

Ensuite:

chmod ug+x /usr/local/etc/php/fpm-restart
cd /usr/local/sbin
ln -s /usr/local/etc/php/fpm-restart

assurez-vous que / usr / local / sbin est dans votre $ PATH

puis appelez-le simplement depuis le terminal fpm-restart et BOOM !!


4
À utiliser homebrew.mxcl.php*.plistsi ça ne marche pas
Daniil Ryzhkov


Les services de brassage font essentiellement ce que votre script fait.
Qiulang le

22

Habituellement, tout service php5-fpm restartva bien, sur une distribution à jour.

Mais parfois, il échoue, vous le dit restart: Unknown instance:(ou tel).

Maintenant, si vous n'aimez pas redémarrer votre serveur, supprimez simplement les processus et redémarrez (édité à partir d'ici):

$ sudo pkill php5-fpm; sudo service php5-fpm start

Merci, cela corrige exactement mon problème. ( stop: Unknown instance:)
Nilloc

13

Cela devrait fonctionner:

pkill -o -USR2 php-fpm
pkill -o -USR2 php5-fpm

3
Si vous avez installé PHP-FPM via homebrew sur un Mac, la première commande fonctionne beaucoup mieux que de décharger + de charger le plist
Alan Ivey

OSX:killall php-fpm
ptim

Sous OSX, ce qui précède m’a donné l’erreur "Utilisateur inconnu SR2". Inverser les arguments a corrigé le problème: "pkill -USR2 -o php-fpm"
Keeth le

Exactement ce dont j'avais besoin pour redémarrer FPM dans un conteneur, merci!
Adrian Günter

J'utilise la version pré-installée ou fournie avec xcode de php et son -fpm associé pour une raison quelconque, et non par Homebrew. Juste pensé que je devrais utiliser ce qui est déjà là. J'utilise une combinaison de php-fpm --prefix /usr/local, en créant des répertoires sous celui-ci, et comme l'a dit @ Keeth pkill -USR2 -o php-fpm, en vérifiant pgrep -l fpm, et les PID changent vraiment! Je n'avais pas de fichiers de plist ou de services à exploiter mentionnés dans certaines des réponses.
Pysis


12

J'ai eu un problème pour redémarrer php7-fpm, parce que je ne savais pas exactement comment le service était nommé. Cette fonction m'a donné la réponse:

service --status-all

Le service php7-fpm de mon Ubuntu a été appelé php7.0-fpm, alors j'ai:

service php7.0-fpm restart


5
+1 pourservice --status-all
JD

6

php-fpm va redémarrer si vous envoyez un signal USR2 au processus principal:

sudo kill -USR2 php-fpm_main_process_id

Il suffit donc d’instruire php-fpm pour enregistrer son pid quelque part. Dans cet exemple, je suppose que vous voulez l'enregistrer sous /etc/private/php-fpm.pidet que php-fpm s'exécute en tant qu'utilisateur _php. Tout d’abord, ajoutez cette ligne au fichier de configuration:

pid = /etc/php-fpm.pid

Ensuite, créez le fichier /etc/php-fpm.pidet assurez-vous que php-fpm est autorisé à le modifier:

$ cd /etc
$ sudo touch php-fpm.pid
$ sudo chown _php php-fpm.pid
$ sudo chmod 644 php-fpm.pid

Maintenant, au prochain démarrage de php-fpm, vous pourrez obtenir son pid et le redémarrer comme ceci:

$ cat /etc/php-fpm.pid
815
$ sudo kill -USR2 815

Ou vous pouvez les combiner en une seule commande:

$ sudo kill -USR2 `cat /etc/private/php-fpm.pid`

J'aime les réponses de @ dialt0ne et @ Keeth pkill ...ci-dessus plus; plus court et plus simple.
Pysis

c'est mieux, et belle explication. Si vous ne faites pas correspondre correctement les processus, pkill risque de tuer vos autres clusters PHP si vous les avez exécutés sur la même boîte (oui, c'est une mauvaise pratique).
Rich K.

3

Pour moi, je venais de mettre à niveau via apt et le redémarrage du service ne fonctionnait pas. J'ai fini par avoir besoin de tuer les processus existants avant qu'il ne fonctionne avec: killall php5-fpm


2

Pour permettre au script de redémarrage PHP-FPM de fonctionner, vous devez utiliser un fichier PID dans votre fichier php-fpm.conf. c'est à dire

pid = /var/run/php-fpm/php-fpm.pid

La valeur par défaut de pid dans php-fpm.conf n'est rien, ce qui signifie que vous ne créez pas de fichier PID, ce qui signifie que le script de redémarrage ne peut pas indiquer le processus à terminer lors du redémarrage.


2

Sur CentOS 7

sudo systemctl enable php-fpm // Just incase is disabled. Also ensures it starts automatically with the server

sudo systemctl start php-fpm  // Start the service

sudo systemctl stop php-fpm   // Stop the service

sudo systemctl status php-fpm  // View status

2

Sur Ubuntu 16 avec php 5,6 fpm.

 /etc/init.d/php5.6-fpm restart

1

Sur RedHat / CentOS 7 en utilisant PHP 7 de softwarecollections.org

service rh-php70-php-fpm start
service rh-php70-php-fpm stop
service rh-php70-php-fpm reload
service rh-php70-php-fpm restart
service rh-php70-php-fpm status

ou si vous utilisez systemctl:

systemctl start rh-php70-php-fpm
systemctl stop rh-php70-php-fpm
systemctl reload rh-php70-php-fpm
systemctl restart rh-php70-php-fpm
systemctl status rh-php70-php-fpm

1

Le moyen le plus simple de trouver le nom du service php-fpm est de le rechercher:

systemctl -l --type service --all | grep fpm

2
Vous pouvez simplifier les choses:systemctl list-units *fpm*
Michael Hampton

0

Sous Windows:

  1. Ouvrez les services dans la console de gestion:

    Start -> Run -> "services.msc" -> OK
    
  2. Sélectionner php-fpmdans la liste

  3. Faites un clic droit et sélectionnez redémarrer

0

Pour les anciennes versions de debian & ubuntu - php 5.6 ce sera

 /etc/init.d/php-fpm56 restart
 service php-fpm56 restart

0

Sur Alpine avec nginx cela fonctionne ici:

Pour tuer tous les processus php-fpm7:

kill $(ps -o pid,comm | grep php-fpm7 | awk '{print $1}')

Pour démarrer php-fpm7:

php-fpm7


0

Pour répertorier les services systemd sous CentOS / RHEL 7.x +, utilisez

systemctl

Pour lister tous les services:

systemctl list-unit-files

Où vous pouvez trouver le service nommé * php-fpm * nom du service de copie et exécuter la commande suivante

systemctl redémarrer ea-php72-php-fpm.service

NOTE: ea-php72-php-fpm.service nommez votre service


-2

Une autre méthode pour MaxOS

Ouvrez ActivityMonitor, recherchez php-fpm, trouvez le pid.

Terminal ouvert, utilisez kill [pid]pour arrêter php-fpm

Puis php-fpmsur terminal pour le démarrer.

S'il existe des informations d'erreur indiquant que 127.0.0.1:9000 est déjà utilisé, ignorez-le.

Rafraîchir Nginx page, devrait voir php.ini changements prennent effet.


Qu'est-ce que MaxOS? Il suffit php-fpmprobablement de lancer le programme sous le mauvais utilisateur. ignorer les messages d'erreur n'est jamais une bonne idée.
Gerald Schneider le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.