Wie starte ich php-fpm neu?


184

Ich muss meine php.ini neu laden und im Hilfedialog steht nichts über den Neustart.

Antworten:


335

Hinweis : sudoWenn nicht root, voranstellen

  • SysV Init-Skripte direkt verwenden:

    /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
    
  • Verwenden des Service Wrapper-Skripts

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Verwenden von Upstart (zB Ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Verwenden von systemd (neuere Server):

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

Oder was auch immer das Äquivalent auf Ihrem System ist.


2
Was ist mit einem Mac? php-fpm wurde mit Homebrew installiert. which php-fpmgibt /usr/local/sbin/php-fpm.
Hobbes3

6
@ hobbes3 try brew services restart php56(Wenn Sie eine Fehlermeldung zu einer nicht verfügbaren Formel erhalten, versuchen Sie es mit einer anderen Version, z. B. php5 oder php55). Wenn Sie keine Brauservices installiert haben, sollte diese beim ersten Start für Sie installiert werden.
Doktor J

Keiner der oben genannten Punkte hat bei mir funktioniert, aber das hat funktioniert: service php-fcgi-mydomain-com restartUnd ich musste es für jede Domain von Sites-fähigen wiederholen
Iljitsch

Dieser war der Gute für mich (centOs):systemctl reload php70-php-fpm
4wk_

Ich bin auf Ubuntu 16.04 und dies schien zu funktionieren: systemctl restart php5.6-fpm.service
Relipse

30

Für Mac OS X ist dies das, was ich mache:

Machen Sie ein Skript /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

Dann:

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

Stellen Sie sicher, dass sich / usr / local / sbin in Ihrem $ PATH befindet

dann ruf es einfach vom terminal fpm-restart und BOOM !!


4
Verwenden Sie, homebrew.mxcl.php*.plistwenn es nicht funktioniert
Daniil Ryzhkov

github.com/Homebrew/homebrew-php#installing-multiple-versions ist der Fall, dass Sie diese .plist-Datei nicht finden können.
Frank Fang

brew services macht im Grunde das, was Ihr Skript macht.
Qiulang

22

Normalerweise reicht service php5-fpm restarteine aktuelle Verteilung aus.

Aber manchmal versagt es und sagt es dir restart: Unknown instance:(oder so).

Wenn Sie Ihren Server nicht neu starten möchten, beenden Sie einfach die Prozesse und starten Sie neu (ab hier bearbeitet):

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

Danke, das hat genau mein Problem behoben. ( stop: Unknown instance:)
Nilloc

13

Das sollte funktionieren:

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

3
Wenn Sie PHP-FPM über Homebrew auf einem Mac installiert haben, funktioniert der erste Befehl viel besser als das Entladen + Laden der Liste
Alan Ivey

OSX:killall php-fpm
22.

Unter OSX gab mir das oben genannte einen Fehler "Unbekannter Benutzer SR2". Das Umkehren der Argumente hat es behoben: "pkill -USR2 -o php-fpm"
Keeth

Genau das, was ich brauchte, um FPM in einem Container neu zu starten, danke!
Adrian Günter

Ich verwende die vorinstallierte oder mit xcode gebündelte Version von PHP und der dazugehörigen -fpm aus irgendeinem Grund und nicht über Homebrew. Ich dachte nur, ich sollte das benutzen, was es schon gibt. Ich benutze eine Kombination von php-fpm --prefix /usr/local, mache einige Verzeichnisse unter dem, den es braucht, und wie @Keeth angegeben hat pkill -USR2 -o php-fpm, pgrep -l fpmprüfe ich mit , und die PIDs ändern sich tatsächlich! Ich hatte keine plist-Dateien oder -Dienste, die ich nutzen könnte, um einige der anderen Antworten zu nutzen.
Pysis


12

Ich hatte ein Problem beim Neustart von php7-fpm, weil ich nicht wusste, wie genau der Dienst benannt wurde. Diese Funktion gab mir die Antwort:

service --status-all

Der php7-fpm-Dienst in meinem Ubuntu wurde aufgerufen php7.0-fpm, also habe ich Folgendes getan:

service php7.0-fpm restart


5
+1 fürservice --status-all
JD

6

php-fpm startet neu, wenn Sie ein USR2-Signal an den Hauptprozess senden:

sudo kill -USR2 php-fpm_main_process_id

Also müssen wir php-fpm nur anweisen, seine PID irgendwo aufzuzeichnen. In diesem Beispiel gehe ich davon aus, dass Sie es unter speichern möchten /etc/private/php-fpm.pidund dass php-fpm als Benutzer _php ausgeführt wird. Fügen Sie zuerst diese Zeile zur Konfigurationsdatei hinzu:

pid = /etc/php-fpm.pid

Dann erstelle die Datei /etc/php-fpm.pidund stelle sicher, dass php-fpm die Berechtigung hat, sie zu ändern:

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

Wenn Sie das nächste Mal php-fpm starten, können Sie die PID abrufen und es wie folgt neu starten:

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

Oder Sie können diese in einem einzigen Befehl kombinieren:

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

Ich mag @ dialt0nes und @ Keeths pkill ...Antwort & Kommentar oben mehr; kürzer und einfacher.
Pysis

Das ist besser und eine nette Erklärung. Das pkill läuft Gefahr, wenn Sie die Prozesse nicht richtig abgleichen, Ihre anderen PHP-Cluster zu töten, wenn Sie sie zufällig auf derselben Box laufen lassen (ja, das ist eine schlechte Praxis).
Rich K.

3

Für mich hatte ich gerade ein Upgrade über apt durchgeführt und der Neustart des Dienstes funktionierte nicht. Am Ende musste ich die vorhandenen Prozesse beenden, bevor es funktionierte: killall php5-fpm


2

Damit das PHP-FPM-Neustart-Skript funktioniert, müssen Sie eine PID-Datei in Ihrer php-fpm.conf-Datei angeben. dh

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

Der Standardwert für pid in der Datei php-fpm.conf ist nothing. Dies bedeutet, dass keine PID-Datei erstellt wird. Das Neustartskript kann also nicht feststellen, welcher Prozess während des Neustarts beendet werden soll.


2

Unter 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

Auf Ubuntu 16 mit PHP 5.6 fpm.

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

1

Unter RedHat / CentOS 7 mit PHP 7 von 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

oder wenn Sie systemctl verwenden:

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

Der einfachste Weg, den Namen des PHP-FPM-Dienstes zu finden, besteht darin, danach zu suchen:

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

2
Sie können es einfacher machen:systemctl list-units *fpm*
Michael Hampton

0

Unter Windows:

  1. Öffnen Sie Dienste in der Verwaltungskonsole:

    Start -> Run -> "services.msc" -> OK
    
  2. Wählen Sie php-fpmaus der Liste

  3. Rechtsklick und Neustart auswählen

0

Für alte Versionen von debian & ubuntu - php 5.6 wird es sein

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

0

Auf Alpine mit Nginx funktioniert das hier:

So beenden Sie alle php-fpm7-Prozesse:

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

So starten Sie php-fpm7:

php-fpm7


0

Zum Auflisten von Systemd-Diensten unter CentOS / RHEL 7.x +

systemctl

So listen Sie alle Dienste auf:

systemctl list-unit-files

Hier finden Sie den Dienst mit dem Namen * php-fpm * copy service name und führen den folgenden Befehl aus

systemctl starte ea-php72-php-fpm.service neu

HINWEIS: ea-php72-php-fpm.service Benutzer Ihren Dienstnamen


-2

Eine andere Methode für MaxOS

Öffne ActivityMonitor, suche php-fpm, finde die pid.

Terminal öffnen, kill [pid]mit PHP-FPM stoppen

Dann php-fpmam Terminal starten.

Wenn es Fehlerinformationen gibt, die 127.0.0.1:9000 bereits verwenden, ignorieren Sie diese einfach.

Aktualisieren Sie die Nginx-Seite, damit die Änderungen in der php.ini wirksam werden.


Was ist MaxOS? Wenn Sie nur php-fpmausführen, wird es höchstwahrscheinlich unter dem falschen Benutzer ausgeführt. Das Ignorieren von Fehlermeldungen ist niemals eine gute Idee.
Gerald Schneider
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.