php-fpm을 어떻게 다시 시작합니까?


184

내 php.ini를 다시로드해야하며 다시 시작하는 것에 대한 도움말 대화 상자에 아무것도 없습니다.

답변:


335

참고 : sudo루트가 아닌 경우 접두사

  • 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
    
  • 서비스 랩퍼 스크립트 사용

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Upstart 사용 (예 : 우분투) :

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • systemd (최신 서버) 사용 :

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

또는 시스템에 해당하는 것이 무엇이든.


2
Mac의 경우는 어떻습니까? php-fpm은 homebrew를 사용하여 설치되었습니다. which php-fpm제공합니다 /usr/local/sbin/php-fpm.
hobbes3

6
@ hobbes3 try brew services restart php56(사용 가능한 수식이 없다는 오류가 발생하면 php5 또는 php55와 같은 다른 버전을 시도하십시오). 추출 서비스가 설치되어 있지 않은 경우 처음 실행할 때 설치해야합니다.
Doktor J

위의 어느 것도 나를 위해 효과가 없었지만 이것은 효과가 service php-fcgi-mydomain-com restart있었습니다 . 그리고 사이트 사용 가능한 모든 도메인에 대해 그것을 반복해야했습니다.
Ilyich

이것은 나를 위해 좋은 것 (centOs) :systemctl reload php70-php-fpm
4wk_

우분투 16.04에있어이 작동 듯 : systemctl restart php5.6-fpm.service
relipse을

30

Mac OS X의 경우 이것이 내가하는 일입니다.

스크립트를 작성하십시오 /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

그때:

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

/ usr / local / sbin이 $ PATH에 있는지 확인하십시오

그런 다음 터미널 fpm-restart 및 BOOM에서 호출하십시오!


4
homebrew.mxcl.php*.plist작동하지 않는 경우 사용
Daniil Ryzhkov

github.com/Homebrew/homebrew-php#installing-multiple-versions 는 .plist 파일을 찾을 수없는 경우입니다.
Frank Fang

양조 서비스는 기본적으로 스크립트의 기능을 수행합니다.
Qiulang

22

일반적으로 service php5-fpm restart최신 배포판에서는 정상적으로 작동합니다.

그러나 때가되면 실패합니다 restart: Unknown instance:.

이제 서버를 재부팅하지 않으려면 프로세스를 종료하고 새로 시작하십시오 (여기서 편집).

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

감사합니다.이 문제가 정확히 해결되었습니다. ( stop: Unknown instance:)
Nilloc

13

이것은 작동해야합니다 :

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

3
Mac에서 homebrew를 통해 PHP-FPM을 설치 한 경우 첫 번째 명령은 plist를 언로드 +로드하는 것보다 훨씬 효과적입니다.
Alan Ivey

OSX :killall php-fpm
ptim

OSX에서 위의 "알 수없는 사용자 SR2"오류가 발생했습니다. "pkill -USR2 -o php-fpm"
Keeth

컨테이너에서 FPM을 다시 시작하는 데 정확히 필요한 것은 감사합니다!
Adrian Günter

어떤 이유로 Homebrew를 통해가 아닌 사전 설치된 또는 xcode, php 버전 및 관련 -fpm과 함께 번들을 사용하고 있습니다. 이미 존재하는 것을 사용해야한다고 생각했습니다. 나는 조합을 사용하고 있으며 php-fpm --prefix /usr/local, 필요한 디렉토리 아래에 일부 디렉토리를 만들고 @Keeth가 언급했듯이 pkill -USR2 -o php-fpm, 점검 pgrep -l fpm하고 PID는 실제로 변경됩니다! 다른 답변 중 일부를 언급 할 plist 파일이나 서비스가 없었습니다.
Pysis


12

서비스 이름을 정확히 알지 못했기 때문에 php7-fpm을 다시 시작하는 데 문제가있었습니다. 이 기능은 나에게 답을 주었다.

service --status-all

우분투의 php7-fpm 서비스는이라고 불렀 php7.0-fpm습니다.

service php7.0-fpm restart


5
service --status-all
JD

6

주 프로세스에 USR2 신호를 보내면 php-fpm이 다시 시작됩니다.

sudo kill -USR2 php-fpm_main_process_id

따라서 우리는 php-fpm에게 pid를 어딘가에 기록하도록 지시해야합니다. 이 예제에서는에 저장하고 /etc/private/php-fpm.pidphp-fpm이 _php 사용자로 실행 한다고 가정 하겠습니다. 먼저 다음 줄을 구성 파일에 추가하십시오.

pid = /etc/php-fpm.pid

그런 다음 파일을 만들고 /etc/php-fpm.pidphp-fpm에 파일 을 수정할 권한이 있는지 확인하십시오.

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

이제 다음에 php-fpm을 시작할 때 pid를 얻고 다음과 같이 다시 시작할 수 있습니다.

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

또는 이들을 단일 명령으로 결합 할 수 있습니다.

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

나는 @ dialt0ne과 @Keeth의 pkill ...답변과 의견을 더 좋아합니다 . 더 짧고 간단합니다.
Pysis

이것은 더 좋고 좋은 설명입니다. pkill은 프로세스가 올바르게 일치하지 않으면 다른 PHP 클러스터를 동일한 상자에서 실행하면 다른 PHP 클러스터를 종료시킬 위험이 있습니다 (예 : 이것은 나쁜 습관입니다).
Rich K.

3

나를 위해 방금 apt를 통해 업그레이드했으며 서비스 다시 시작이 작동하지 않았습니다. killall php5-fpm을 사용하기 전에 기존 프로세스를 종료해야했습니다.


2

PHP-FPM 재시작 스크립트가 작동하게하려면 php-fpm.conf 파일에 PID 파일을 지정해야합니다. 즉

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

php-fpm.conf에서 pid의 기본값은 아무것도 아닙니다. 이는 PID 파일을 만들지 않음을 의미합니다. 다시 시작 스크립트는 다시 시작 중에 종료 할 프로세스를 알 수 없습니다.


2

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

PHP 5.6 fpm의 우분투 16에서.

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

1

softwarecollections.org의 PHP 7을 사용하는 RedHat / CentOS 7

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

또는 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

php-fpm 서비스의 이름을 찾는 가장 간단한 방법은 검색하는 것입니다.

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

2
더 간단하게 만들 수 있습니다.systemctl list-units *fpm*
Michael Hampton

0

Windows에서 :

  1. 관리 콘솔에서 서비스를 엽니 다.

    Start -> Run -> "services.msc" -> OK
    
  2. php-fpm목록에서 선택

  3. 마우스 오른쪽 버튼을 클릭하고 다시 시작을 선택하십시오.


0

nginx가있는 알파인에서는 여기에서 작동합니다.

모든 php-fpm7 프로세스를 종료하려면 :

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

php-fpm7을 시작하려면 :

php-fpm7


0

CentOS / RHEL 7.x +에서 시스템 서비스를 나열하려면 다음을 사용하십시오.

systemctl

모든 서비스를 나열하려면

systemctl 목록 단위 파일

* php-fpm * copy service name이라는 서비스를 찾을 수있는 곳에서 다음 명령을 실행하십시오

systemctl restart ea-php72-php-fpm.service

참고 : ea-php72-php-fpm.service 사용자 서비스 이름


-2

MaxOS를위한 또 다른 방법

ActivityMonitor를 열고 php-fpm을 검색하고 pid를 찾으십시오.

터미널 열기, kill [pid]PHP-FPM 중지에 사용

그런 다음 php-fpm터미널에서 시작하십시오.

127.0.0.1:9000 이미 사용중인 오류 정보가 있으면 무시하십시오.

Nginx 페이지를 새로 고치면 php.ini 변경 사항이 적용됩니다.


MaxOS 란 무엇입니까? 그냥 실행 php-fpm하면 대부분 잘못된 사용자로 실행 됩니다. 오류 메시지를 무시하는 것은 좋은 생각이 아닙니다.
제랄드 슈나이더
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.