¿Cómo reinicias php-fpm?

184

Necesito volver a cargar mi php.ini y no hay nada en el diálogo de ayuda sobre reiniciarlo.

Galen
fuente

Respuestas:

335

Nota : anteponer sudosi no root

  • Usando scripts de SysV Init directamente:

    /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
    
  • Usar script de contenedor de servicio

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Usando Upstart (por ejemplo, ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Usando systemd (servidores más nuevos):

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

O cualquiera que sea el equivalente en su sistema.

tylerl
fuente
2
¿Qué pasa en una Mac? php-fpm se instaló usando homebrew. which php-fpmda /usr/local/sbin/php-fpm.
hobbes3
66
@ hobbes3 try brew services restart php56(si obtiene un error acerca de que no hay una fórmula disponible, intente con una versión diferente, por ejemplo, php5 o php55). Si no tiene instalados los servicios de preparación, debería instalarlo en la primera ejecución.
Doktor J
Nada de lo anterior funcionó para mí, pero esto funcionó: service php-fcgi-mydomain-com restarty tuve que repetirlo para cada dominio desde sitios habilitados
Ilich
Este fue el bueno para mí (centOs):systemctl reload php70-php-fpm
4wk_
Estoy en Ubuntu 16.04 y esto pareció funcionar: systemctl restart php5.6-fpm.service
relipse
30

Para Mac OS X, esto es lo que hago:

Haz un guión /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

Entonces:

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

asegúrese de que / usr / local / sbin esté en su $ PATH

entonces solo llámalo desde la terminal fpm-restart y BOOM !!

Diego Antunes
fuente
44
Úselo homebrew.mxcl.php*.plistsi no funciona
Daniil Ryzhkov
github.com/Homebrew/homebrew-php#installing-multiple-versions es el caso de que no pueda encontrar este archivo .plist.
Frank Fang
brew services básicamente hace lo que hace tu script.
Qiulang
22

Por lo general, funcionará service php5-fpm restartbien, en una distribución actualizada.

Pero a veces, falla, diciéndote restart: Unknown instance:(o algo así).

Ahora, si no desea reiniciar su servidor, simplemente elimine los procesos y tenga un nuevo comienzo (editado a partir de aquí):

$ sudo pkill php5-fpm; sudo service php5-fpm start
BurninLeo
fuente
Gracias, esto solucionó exactamente mi problema. ( stop: Unknown instance:)
Nilloc
13

Esto debería funcionar:

pkill -o -USR2 php-fpm
pkill -o -USR2 php5-fpm
dialt0ne
fuente
3
Si instaló PHP-FPM a través de homebrew en una Mac, el primer comando funciona mucho mejor que descargar + cargar la lista
Alan Ivey
OSX:killall php-fpm
ptim
En OSX, lo anterior me dio un error "Usuario desconocido SR2". Invertir los argumentos lo arregló: "pkill -USR2 -o php-fpm"
Guarda el
Exactamente lo que necesitaba para reiniciar FPM en un contenedor, ¡gracias!
Adrian Günter
Estoy usando la versión preinstalada, o incluida con xcode, de php y su -fpm asociado por alguna razón, y no a través de Homebrew. Solo pensé que debería usar lo que ya está allí. Estoy usando una combinación de php-fpm --prefix /usr/local, haciendo algunos directorios bajo el que necesita, y como ha dicho @Keeth pkill -USR2 -o php-fpm, ¡verificar con pgrep -l fpm, y los PID realmente cambian! No tenía archivos o servicios plist para aprovechar los mencionados por algunas de las otras respuestas.
Pysis
12

Para Mac OSX brew services restart php56funcionó para mí.

Blake Frederick
fuente
1
Sí, también funciona para mí. Mac osx
Mike Nguyen
12

Tuve un problema al reiniciar php7-fpm, porque no sabía cómo se llamaba exactamente el servicio. Esta función me dio la respuesta:

service --status-all

Se llamó al servicio php7-fpm en mi Ubuntu php7.0-fpm, así que hice:

service php7.0-fpm restart

Lucas
fuente
55
+1 paraservice --status-all
JD
6

php-fpm se reiniciará si envía una señal USR2 al proceso principal:

sudo kill -USR2 php-fpm_main_process_id

Entonces solo necesitamos instruir a php-fpm para grabar su pid en alguna parte. En este ejemplo, /etc/private/php-fpm.pidsupondré que desea guardarlo en , y que php-fpm se ejecuta como usuario _php. Primero, agregue esta línea al archivo de configuración:

pid = /etc/php-fpm.pid

Luego cree el archivo /etc/php-fpm.pidy asegúrese de que php-fpm tenga permiso para modificarlo:

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

Ahora, la próxima vez que se inicie php-fpm, podrá obtener su pid y reiniciarlo así:

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

O puede combinarlos en un solo comando:

$ sudo kill -USR2 `cat /etc/private/php-fpm.pid`
Pitarou
fuente
Me gustan las pkill ...respuestas y comentarios de @ dialt0ne y @ Keeth más arriba; más corto y más simple
Pysis
Esto es mejor, y buena explicación. el pkill corre el riesgo, si no logra que los procesos coincidan correctamente, de matar a sus otros clústeres de PHP si los tiene ejecutándose en el mismo cuadro (sí, esta es una mala práctica).
Rich K.
3

Para mí, acababa de actualizar a través de apt y el reinicio del servicio no funcionaba. Terminé necesitando matar los procesos existentes antes de que funcionara usando: killall php5-fpm

Perro
fuente
2

Para permitir que funcione el script de reinicio de PHP-FPM, debe usar especificar un archivo PID en su archivo php-fpm.conf. es decir

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

El valor predeterminado para pid en php-fpm.conf es nada, lo que significa que no se debe crear un archivo PID, lo que significa que el script de reinicio no puede indicar qué proceso finalizará durante el reinicio.

Danack
fuente
2

En 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
fuente
2

En Ubuntu 16 con php 5.6 fpm.

 /etc/init.d/php5.6-fpm restart
MrPHP
fuente
1

En RedHat / CentOS 7 usando 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

o si estás 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
Jeremy Tarpley
fuente
1

La forma más sencilla de encontrar el nombre del servicio php-fpm es buscarlo:

systemctl -l --type service --all | grep fpm
Saman Mohamadi
fuente
2
Puede hacerlo más simple:systemctl list-units *fpm*
Michael Hampton
0

En Windows:

  1. Servicios abiertos en la consola de administración:

    Start -> Run -> "services.msc" -> OK
    
  2. Seleccionar php-fpmde la lista

  3. Haga clic derecho y seleccione reiniciar
Gerald Schneider
fuente
0

Para versiones anteriores de debian y ubuntu - php 5.6 será

 /etc/init.d/php-fpm56 restart
 service php-fpm56 restart
Nicolas Guérinet
fuente
0

En Alpine con nginx esto funciona aquí:

Para eliminar todos los procesos php-fpm7:

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

Para iniciar php-fpm7:

php-fpm7

Junior M
fuente
0

Para enumerar los servicios systemd en CentOS / RHEL 7.x + use

systemctl

Para enumerar todos los servicios:

systemctl list-unit-files

Donde puede encontrar el servicio llamado * php-fpm * copie el nombre del servicio y ejecute el siguiente comando

reinicio de systemctl ea-php72-php-fpm.service

NOTA: ea-php72-php-fpm.service usuario su nombre de servicio

Rj_Innocent_Coder
fuente
-2

Otro método para MaxOS

Abra ActivityMonitor, busque php-fpm, busque el pid.

Abra la terminal, use kill [pid]para detener php-fpm

Luego php-fpmen la terminal para iniciarlo.

Si hay información de error que 127.0.0.1:9000 ya está en uso, simplemente ignórela.

Actualice la página de Nginx, debería ver que los cambios en php.ini tienen efecto

Shark Deng
fuente
¿Qué es MaxOS? Solo ejecutarlo php-fpmprobablemente lo ejecutará bajo el usuario incorrecto; ignorar los mensajes de error nunca es una buena idea.
Gerald Schneider