Come si riavvia php-fpm?


184

Ho bisogno di ricaricare il mio php.ini e non c'è nulla nella finestra di aiuto per riavviarlo.

Risposte:


335

Nota : anteporre sudose non root

  • Utilizzo diretto degli script 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
    
  • Utilizzo dello script del wrapper di servizio

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Utilizzando Upstart (ad es. Ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Utilizzando systemd (server più recenti):

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

O qualunque sia l'equivalente sul tuo sistema.


2
Che dire di un Mac? php-fpm è stato installato usando homebrew. which php-fpm/usr/local/sbin/php-fpm.
hobbes3

6
@ hobbes3 try brew services restart php56(se ricevi un errore per nessuna formula disponibile, prova una versione diversa, ad esempio php5 o php55). Se non hai installato brew services, dovrebbe installarlo per te al primo avvio.
Doktor J,

Nessuna delle precedenti ha funzionato per me, ma questo ha funzionato: service php-fcgi-mydomain-com restarte ho dovuto ripeterlo per ogni dominio dai siti abilitati
Ilyich,

Questo è stato il migliore per me (centOs):systemctl reload php70-php-fpm
settimane dal

Sono su Ubuntu 16.04 e questo sembra funzionare: systemctl restart php5.6-fpm.service
ricaduta il

30

Per Mac OS X, questo è quello che faccio:

Crea una sceneggiatura /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

Poi:

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

assicurati che / usr / local / sbin sia nel tuo $ PATH

quindi basta chiamarlo dal terminale fpm-restart e BOOM !!


4
Utilizzare homebrew.mxcl.php*.plistse non funziona
Daniil Ryzhkov l'

github.com/Homebrew/homebrew-php#installing-multiple-versions è il caso in cui non riesci a trovare il file .plist.
Frank Fang,

brew services fondamentalmente fa quello che fa il tuo script.
Qiulang il

22

Di solito, service php5-fpm restartandrà bene, su una distribuzione aggiornata.

Ma a volte fallisce, te lo dice restart: Unknown instance:(o simili).

Ora, se non ti piace riavviare il tuo server, basta uccidere i processi e ricominciare (modificato da qui):

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

Grazie, questo risolto esattamente il mio problema. ( stop: Unknown instance:)
Nilloc,

13

Questo dovrebbe funzionare:

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

3
Se hai installato PHP-FPM via homebrew su un Mac, il primo comando funziona molto meglio di scaricare + caricare il plist
Alan Ivey,

OSX:killall php-fpm
ptim

Su OSX quanto sopra mi ha dato un errore "Utente sconosciuto SR2". Inversione degli argomenti risolto: "pkill -USR2 -o php-fpm"
Keeth

Esattamente quello che mi serviva per riavviare FPM in un contenitore, grazie!
Adrian Günter,

Sto usando il preinstallato, o in bundle con xcode, la versione di php e il suo -fpm associato per qualche motivo, e non tramite Homebrew. Ho pensato che avrei dovuto usare quello che c'era già. Sto usando una combinazione di php-fpm --prefix /usr/local, creando alcune directory sotto quella di cui ha bisogno, e come ha affermato @Keeth pkill -USR2 -o php-fpm, controllando pgrep -l fpme i PID cambiano davvero! Non avevo file o servizi di plist da sfruttare menzionati da alcune delle altre risposte.
Pysis,


12

Ho avuto un problema con il riavvio di php7-fpm, perché non sapevo come si chiamasse esattamente il servizio. Questa funzione mi ha dato la risposta:

service --status-all

Il servizio php7-fpm nel mio Ubuntu è stato chiamato php7.0-fpm, quindi ho fatto:

service php7.0-fpm restart


5
+1 perservice --status-all
JD

6

php-fpm si riavvierà se si invia un segnale USR2 al processo principale:

sudo kill -USR2 php-fpm_main_process_id

Quindi dobbiamo solo istruire php-fpm a registrare il suo pid da qualche parte. In questo esempio, suppongo che tu voglia salvarlo su /etc/private/php-fpm.pid, e che php-fpm gira come utente _php. Innanzitutto, aggiungi questa linea al file di configurazione:

pid = /etc/php-fpm.pid

Quindi crea il file /etc/php-fpm.pide assicurati che php-fpm disponga dell'autorizzazione per modificarlo:

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

Ora, la prossima volta che php-fpm si avvia, sarai in grado di ottenere il suo pid e riavviarlo in questo modo:

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

Oppure puoi combinarli in un unico comando:

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

Mi piace la pkill ...risposta e il commento di @ dialt0ne e @ Keeth sopra; più breve e più semplice.
Pysis,

questa è migliore e bella spiegazione. il pkill corre il rischio, se non si ottengono i processi abbinati correttamente, di uccidere gli altri cluster PHP se si capita di averli in esecuzione sullo stesso riquadro (sì, questa è una cattiva pratica).
Rich K.

3

Per me avevo appena effettuato l'aggiornamento tramite apt e il riavvio del servizio non funzionava. Ho finito per aver bisogno di uccidere i processi esistenti prima che funzionasse usando: killall php5-fpm


2

Per consentire allo script di riavvio PHP-FPM di funzionare, è necessario utilizzare specificare un file PID nel file php-fpm.conf. vale a dire

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

Il valore predefinito per pid in php-fpm.conf è nulla, il che significa che non è possibile creare un file PID, il che significa che lo script di riavvio non può dire quale processo terminare durante il riavvio.


2

Su 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

Su Ubuntu 16 con php 5.6 fpm.

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

1

Su RedHat / CentOS 7 usando PHP 7 da 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

o se stai usando 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

Il modo più semplice per trovare il nome del servizio php-fpm è cercarlo:

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

2
Puoi renderlo più semplice:systemctl list-units *fpm*
Michael Hampton

0

Su Windows:

  1. Servizi aperti nella console di gestione:

    Start -> Run -> "services.msc" -> OK
    
  2. Seleziona php-fpmdalla lista

  3. Fare clic con il tasto destro e selezionare riavvia

0

Per le vecchie versioni di debian & ubuntu - php 5.6 lo sarà

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

0

Su Alpine con nginx funziona qui:

Per terminare tutti i processi php-fpm7:

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

Per avviare php-fpm7:

php-fpm7


0

Per elencare i servizi di systemd su CentOS / RHEL 7.x + utilizzare

systemctl

Per elencare tutti i servizi:

systemctl list-unit-files

Dove puoi trovare il servizio chiamato * php-fpm * copia il nome del servizio ed esegui il comando seguente

riavvio di systemctl ea-php72-php-fpm.service

NOTA: ea-php72-php-fpm.service user il tuo nome di servizio


-2

Un altro metodo per MaxOS

Apri ActivityMonitor, cerca php-fpm, trova il pid.

Apri terminale, usa kill [pid]per fermare php-fpm

Quindi php-fpmsul terminale per avviarlo.

Se ci sono informazioni sull'errore che 127.0.0.1:9000 già in uso, ignoralo.

Aggiorna la pagina Nginx, dovrebbe vedere gli effetti delle modifiche a php.ini.


Che cos'è MaxOS? Solo in esecuzione php-fpmsarà molto probabilmente eseguito sotto l'utente sbagliato; ignorare i messaggi di errore non è mai una buona idea.
Gerald Schneider,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.