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.

Galen
la source

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.

tylerl
la source
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 !!

Diego Antunes
la source
4
À utiliser homebrew.mxcl.php*.plistsi ça ne marche pas
Daniil Ryzhkov
github.com/Homebrew/homebrew-php#installing-multiple-versions si vous ne trouvez pas ce fichier .plist.
Frank Fang
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
BurninLeo
la source
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
dialto
la source
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

Pour Mac OSX a brew services restart php56fonctionné pour moi.

Blake Frederick
la source
1
oui, travaille pour moi aussi. Mac osx
Mike Nguyen
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

Lucas
la source
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`
Pitarou
la source
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

Cabot
la source
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.

Danack
la source
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
Fokwa Best
la source
2

Sur Ubuntu 16 avec php 5,6 fpm.

 /etc/init.d/php5.6-fpm restart
MrPHP
la source
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
Jeremy Tarpley
la source
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
Saman Mohamadi
la source
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
Gerald Schneider
la source
0

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

 /etc/init.d/php-fpm56 restart
 service php-fpm56 restart
Nicolas Guérinet
la source
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

Junior M
la source
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

Rj_Innocent_Coder
la source
-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.

Requin deng
la source
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