Jak zrestartujesz php-fpm?


184

Muszę ponownie załadować plik php.ini i nie ma nic w oknie dialogowym pomocy na temat jego ponownego uruchomienia.

Odpowiedzi:


335

Uwaga : dodaj, sudojeśli nie root

  • Korzystanie bezpośrednio ze skryptów 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
    
  • Korzystanie ze skryptu opakowania usługi

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Korzystanie z Upstart (np. Ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Za pomocą systemd (nowsze serwery):

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

Lub cokolwiek równoważnego jest w twoim systemie.


2
Co powiesz na komputerze Mac? php-fpm został zainstalowany przy użyciu homebrew. which php-fpmdaje /usr/local/sbin/php-fpm.
hobbes3

6
@ hobbes3 try brew services restart php56(jeśli pojawi się błąd związany z brakiem dostępnej formuły, wypróbuj inną wersję, np. php5 lub php55). Jeśli nie masz zainstalowanych usług browarniczych, powinien zainstalować je dla Ciebie przy pierwszym uruchomieniu.
Doktor J,

Żadne z powyższych nie działało dla mnie, ale tak się service php-fcgi-mydomain-com restartstało : I musiałem to powtórzyć dla każdej domeny z włączonymi witrynami
Ilyich

Ten był dla mnie dobry (centOs):systemctl reload php70-php-fpm
4wk_

Jestem na Ubuntu 16.04 i wydaje się, że to działa: systemctl restart php5.6-fpm.service
powtórz

30

W Mac OS X robię to:

Stwórz skrypt /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

Następnie:

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

upewnij się, że / usr / local / sbin znajduje się w $ PATH

następnie po prostu wywołaj to z terminala fpm-restart i BOOM !!


4
Użyj, homebrew.mxcl.php*.plistjeśli to nie zadziała
Daniil Ryżkow

github.com/Homebrew/homebrew-php#installing-multiple-versions to przypadek, w którym nie możesz znaleźć tego pliku .plist.
Frank Fang,

usługi brew zasadniczo robi to, co robi twój skrypt.
Qiulang

22

Zazwyczaj service php5-fpm restartbędzie dobrze, na aktualnej dystrybucji.

Ale czasami zawodzi, mówiąc ci restart: Unknown instance:(lub coś takiego).

Teraz, jeśli nie chcesz ponownie uruchamiać serwera, po prostu zabij procesy i zacznij od nowa (edytowane od tego momentu):

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

Dzięki, to naprawiło dokładnie mój problem. ( stop: Unknown instance:)
Nilloc,

13

To powinno działać:

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

3
Jeśli zainstalowałeś PHP-FPM przez homebrew na komputerze Mac, pierwsze polecenie działa o wiele lepiej niż rozładowanie + załadowanie plist
Alan Ivey

OSX:killall php-fpm
ptim

W OSX powyższy komunikat o błędzie „Nieznany użytkownik SR2”. Odwrotne argumenty naprawiły go: „pkill -USR2 -o php-fpm”
Keeth

Dokładnie to, czego potrzebowałem, aby ponownie uruchomić FPM w kontenerze, dzięki!
Adrian Günter

Używam preinstalowanej lub dołączonej do xcode wersji php i powiązanej z nim -fpm z jakiegoś powodu, a nie przez Homebrew. Pomyślałem, że powinienem już użyć tego, co tam jest. Korzystam z kombinacji php-fpm --prefix /usr/localtworzenia niektórych katalogów w ramach tego, którego potrzebuje, a jak stwierdził @Keeth pkill -USR2 -o php-fpm, sprawdzanie za pomocą pgrep -l fpmi identyfikatory PID naprawdę się zmieniają! Nie miałem plików plist ani usług, z których można by skorzystać, o których wspominały niektóre inne odpowiedzi.
Pysis,


12

Miałem problem z ponownym uruchomieniem php7-fpm, ponieważ nie wiedziałem, jak dokładnie została nazwana ta usługa. Ta funkcja dała mi odpowiedź:

service --status-all

Wywołano usługę php7-fpm w moim Ubuntu php7.0-fpm, więc zrobiłem:

service php7.0-fpm restart


5
+1 zaservice --status-all
JD

6

php-fpm uruchomi się ponownie, jeśli wyślesz sygnał USR2 do głównego procesu:

sudo kill -USR2 php-fpm_main_process_id

Musimy więc po prostu poinstruować php-fpm, aby gdzieś nagrał swój pid. W tym przykładzie /etc/private/php-fpm.pidzałożę, że chcesz go zapisać , i że php-fpm działa jako użytkownik _php. Najpierw dodaj ten wiersz do pliku konfiguracyjnego:

pid = /etc/php-fpm.pid

Następnie utwórz plik /etc/php-fpm.pidi upewnij się, że php-fpm ma uprawnienia do jego modyfikacji:

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

Teraz następnym razem, gdy uruchomi się php-fpm, będziesz mógł uzyskać jego pid i zrestartować go w następujący sposób:

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

Lub możesz połączyć je w jedno polecenie:

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

Podoba mi się pkill ...odpowiedź i komentarz @ dialt0ne i @ Keeth powyżej; krótszy i prostszy.
Pysis,

to jest lepsze i miłe wytłumaczenie. pkill grozi, jeśli nie dopasujesz procesów poprawnie, zabiciem innych klastrów PHP, jeśli zdarzy się, że będą działały na tym samym urządzeniu (tak, to zła praktyka).
Rich K.,

3

Dla mnie właśnie zaktualizowałem przez apt, a restart usługi nie działał. Skończyło się na tym, że musiałem zabić istniejące procesy, zanim zadziałało: killall php5-fpm


2

Aby zezwolić na działanie skryptu restartu PHP-FPM, musisz użyć pliku PID w pliku php-fpm.conf. to znaczy

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

Domyślna wartość dla pid w php-fpm.conf to nic, co oznacza, że ​​nie można utworzyć pliku PID, co oznacza, że ​​skrypt restartu nie może powiedzieć, który proces zakończyć podczas restartu.


2

Na 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

Na Ubuntu 16 z php 5.6 fpm.

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

1

Na RedHat / CentOS 7 przy użyciu PHP 7 z 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

lub jeśli używasz 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

Najprostszym sposobem na znalezienie nazwy usługi php-fpm jest jej wyszukanie:

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

2
Możesz to uprościć:systemctl list-units *fpm*
Michael Hampton

0

W systemie Windows:

  1. Otwórz usługi w konsoli zarządzania:

    Start -> Run -> "services.msc" -> OK
    
  2. Wybierz php-fpmz listy

  3. Kliknij prawym przyciskiem myszy i wybierz Uruchom ponownie


0

W Alpine z nginx działa to tutaj:

Aby zabić wszystkie procesy php-fpm7:

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

Aby uruchomić php-fpm7:

php-fpm7


0

Aby wyświetlić listę usług systemowych na CentOS / RHEL 7.x + użyj

systemctl

Aby wyświetlić listę wszystkich usług:

systemctl list-unit-files

Gdzie można znaleźć usługę o nazwie * php-fpm * skopiuj nazwę usługi i uruchom następujące polecenie

systemctl restart ea-php72-php-fpm.service

UWAGA: ea-php72-php-fpm.service użytkownik nazwa usługi


-2

Kolejna metoda dla MaxOS

Otwórz ActivityMonitor, wyszukaj php-fpm, znajdź pid.

Otwórz terminal, użyj, kill [pid]aby zatrzymać php-fpm

Następnie php-fpmna terminalu, aby go uruchomić.

Jeśli istnieją informacje o błędzie, które 127.0.0.1:9000 są już w użyciu, po prostu zignoruj ​​to.

Odśwież stronę Nginx, zobaczysz, że zmiany w php.ini zaczną działać.


Co to jest MaxOS? Tylko uruchomienie php-fpmnajprawdopodobniej uruchomi go pod niewłaściwym użytkownikiem; ignorowanie komunikatów o błędach nigdy nie jest dobrym pomysłem.
Gerald Schneider
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.