Como você reinicia o php-fpm?

184

Preciso recarregar meu php.ini e não há nada na caixa de diálogo de ajuda sobre como reiniciá-lo.

Galen
fonte

Respostas:

335

Nota : acrescente sudose não for root

  • Usando scripts SysV Init diretamente:

    /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
    
  • Usando script de wrapper de serviço

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Usando o Upstart (por exemplo, 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 mais recentes):

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

Ou qualquer que seja o equivalente em seu sistema.

tylerl
fonte
2
E em um Mac? O php-fpm foi instalado usando o homebrew. which php-fpm/usr/local/sbin/php-fpm.
hobbes3
6
@ hobbes3 try brew services restart php56(se você receber um erro sobre nenhuma fórmula disponível, tente uma versão diferente, por exemplo, php5 ou php55). Se você não possui serviços de distribuição instalados, ele deve ser instalado na primeira execução.
Doktor J
Nenhuma das opções acima funcionou para mim, mas isso fez: service php-fcgi-mydomain-com restartE eu tive que repeti-la para cada domínio de sites-enabled
Ilyich
Este foi o bom para mim (CentOS):systemctl reload php70-php-fpm
4wk_
Estou no Ubuntu 16.04 e isso pareceu funcionar: systemctl restart php5.6-fpm.service
relipse
30

Para o Mac OS X, é isso que eu faço:

Faça um 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

Então:

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

verifique se / usr / local / sbin está no seu $ PATH

basta chamá-lo a partir do terminal fpm-restart e BOOM !!

Diego Antunes
fonte
4
Use homebrew.mxcl.php*.plistse não der certo #
Daniil Ryzhkov
github.com/Homebrew/homebrew-php#installing-multiple-versions é o caso de você não encontrar o arquivo .plist.
Frank fang
serviços de fermentação basicamente fazem o que seu script faz.
Qiulang 23/01
22

Geralmente, tudo service php5-fpm restartfica bem, em uma distribuição atualizada.

Mas, às vezes, falha, dizendo a você restart: Unknown instance:(ou algo assim).

Agora, se você não gosta de reiniciar o servidor, basta matar os processos e ter um novo começo (editado a partir daqui):

$ sudo pkill php5-fpm; sudo service php5-fpm start
BurninLeo
fonte
Obrigado, isso corrigiu exatamente o meu problema. ( stop: Unknown instance:)
Nilloc 31/08/16
13

Isso deve funcionar:

pkill -o -USR2 php-fpm
pkill -o -USR2 php5-fpm
dialt0ne
fonte
3
Se você instalou o PHP-FPM via homebrew em um Mac, o primeiro comando funciona muito melhor do que descarregar + load'ing o plist
Alan Ivey
OSX:killall php-fpm
ptim
No OSX, o código acima deu um erro "Usuário desconhecido SR2". A inversão dos argumentos o corrigiu: "pkill -USR2 -o php-fpm"
Keeth 9/15
Exatamente o que eu precisava para reiniciar o FPM em um contêiner, obrigado!
Adrian Günter
Estou usando a versão pré-instalada ou empacotada com xcode, versão do php e seu -fpm associado por algum motivo, e não através do Homebrew. Apenas pensei em usar o que já existe. Estou usando uma combinação de php-fpm --prefix /usr/local, criando alguns diretórios abaixo daquele que ele precisa e, como o @Keeth afirmou pkill -USR2 -o php-fpm, verificando pgrep -l fpme os PIDs realmente mudam! Eu não tinha arquivos ou serviços básicos para tirar proveito mencionados por algumas das outras respostas.
Pysis
12

Para Mac OSX brew services restart php56funcionou para mim.

Blake Frederick
fonte
1
Sim, funciona para mim também. Mac OSX
Mike Nguyen
12

Eu tive um problema ao reiniciar o php7-fpm, porque não sabia exatamente como o serviço foi nomeado. Esta função me deu a resposta:

service --status-all

O serviço php7-fpm no meu Ubuntu foi chamado php7.0-fpm, então eu fiz:

service php7.0-fpm restart

Lucas
fonte
5
+1 paraservice --status-all
JD
6

O php-fpm será reiniciado se você enviar um sinal USR2 para o processo principal:

sudo kill -USR2 php-fpm_main_process_id

Então, só precisamos instruir o php-fpm para gravar seu pid em algum lugar. Neste exemplo, assumirei que você deseja salvá-lo em /etc/private/php-fpm.pid, e que o php-fpm é executado como usuário _php. Primeiro, adicione esta linha ao arquivo de configuração:

pid = /etc/php-fpm.pid

Em seguida, crie o arquivo /etc/php-fpm.pide verifique se o php-fpm tem permissão para modificá-lo:

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

Agora, da próxima vez que o php-fpm for iniciado, você poderá obter seu pid e reiniciá-lo assim:

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

Ou você pode combiná-los em um único comando:

$ sudo kill -USR2 `cat /etc/private/php-fpm.pid`
Pitarou
fonte
Estou gostando das respostas dos @ dialt0ne e @ Keeth pkill ...e acima; mais curto e mais simples.
Pysis
isso é melhor e uma boa explicação. o pkill corre o risco, se você não conseguir os processos correspondentes, de eliminar seus outros clusters PHP, se você os tiver executando na mesma caixa (sim, isso é uma prática ruim).
Rico K.
3

Para mim, eu tinha acabado de atualizar via apt e a reinicialização do serviço não estava funcionando. Acabei precisando matar os processos existentes antes de funcionarem usando: killall php5-fpm

Pooch
fonte
2

Para permitir que o script de reinicialização do PHP-FPM funcione, você deve especificar um arquivo PID no arquivo php-fpm.conf. ie

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

O valor padrão para pid no php-fpm.conf não é nada, o que significa não criar um arquivo PID, o que significa que o script de reinicialização não pode dizer qual processo terminar durante a reinicialização.

Danack
fonte
2

No 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
fonte
2

No Ubuntu 16 com php 5.6 fpm.

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

No RedHat / CentOS 7 usando PHP 7 em 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 se você estiver 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
fonte
1

A maneira mais simples de encontrar o nome do serviço php-fpm é procurá-lo:

systemctl -l --type service --all | grep fpm
Saman Mohamadi
fonte
2
Você pode simplificar:systemctl list-units *fpm*
Michael Hampton
0

No Windows:

  1. Abra Serviços no Console de Gerenciamento:

    Start -> Run -> "services.msc" -> OK
    
  2. Selecione php-fpmna lista

  3. Clique com o botão direito e selecione reiniciar
Gerald Schneider
fonte
0

Para versões antigas do debian e ubuntu - php 5.6, será

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

No Alpine com nginx, isso está funcionando aqui:

Para matar todos os processos php-fpm7:

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

Para iniciar o php-fpm7:

php-fpm7

Junior M
fonte
0

Para listar os serviços systemd no CentOS / RHEL 7.x +, use

systemctl

Para listar todos os serviços:

systemctl list-unit-files

Onde você pode encontrar o serviço chamado * php-fpm * copy service name e execute o seguinte comando

systemctl restart ea-php72-php-fpm.service

NOTA: usuário ea-php72-php-fpm.service seu nome de serviço

Rj_Innocent_Coder
fonte
-2

Outro método para o MaxOS

Abra o ActivityMonitor, pesquise php-fpm, encontre o pid.

Terminal aberto, use kill [pid]para parar o php-fpm

Em seguida, php-fpmno terminal para iniciá-lo.

Se houver informações de erro que 127.0.0.1:9000 já estejam em uso, ignore-as.

Na página Atualizar Nginx, as alterações do php.ini devem ter efeito.

Shark Deng
fonte
O que é o MaxOS? Apenas correr php-fpmprovavelmente o executará com o usuário errado; ignorar mensagens de erro nunca é uma boa ideia.
Gerald Schneider