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.