Php-fpm'yi nasıl yeniden başlatırsınız?


184

Php.ini dosyasını yeniden yüklemem gerekiyor ve yardım iletişim kutusunda onu yeniden başlatmayla ilgili hiçbir şey yok.

Yanıtlar:


335

Not : sudoroot değilse hazırla

  • SysV Init komut dosyalarını doğrudan kullanma:

    /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
    
  • Hizmet sarmalayıcı komut dosyasını kullanma

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Upstart'ı kullanma (örn. Ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Systemd (daha yeni sunucular) kullanarak:

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

Veya sisteminizde eşdeğeri varsa.


2
Peki ya Mac? php-fpm homebrew kullanılarak kuruldu. which php-fpmverir /usr/local/sbin/php-fpm.
Hobbes3

6
@ hobbes3 deneyin brew services restart php56(kullanılabilir formül hakkında bir hata yoksa, php5 veya php55 gibi farklı bir sürümü deneyin). Brew hizmetleri kurulmamışsa, ilk çalıştırmada sizin için yüklemelidir.
Doktor J

Yukarıdakilerin hiçbiri benim için işe yaramadı, ama bu yaptı: service php-fcgi-mydomain-com restartVe sitelerin etkin olduğu her alan için tekrarlamak zorunda kaldım
Ilyich

Bu benim için iyiydi (centOs):systemctl reload php70-php-fpm
4wk_

Ben Ubuntu 16.04 çıkıyorum ve bu işe gibiydi: systemctl restart php5.6-fpm.service
relipse

30

Mac OS X için yaptığım şey şu:

Bir komut dosyası yap /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

Sonra:

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

/ usr / local / sbin dosyasının $ PATH’nizde olduğundan emin olun

o zaman sadece fpm-restart terminalinden ve BOOM !!


4
Kullan homebrew.mxcl.php*.plistişe yaramazsa
Daniil Ryzhkov

github.com/Homebrew/homebrew-php#installing-multiple-versions , bu .plist dosyasını bulamamanız durumundadır.
Frank Fang

brew hizmetleri temelde betiğinizin yaptığını yapar.
Qiulang

22

Genellikle, service php5-fpm restartgüncel bir dağıtımla para cezası verilir.

Ama bazen, size restart: Unknown instance:(veya böyle) söyleyerek başarısız olur .

Şimdi, sunucunuzu yeniden başlatmak istemezseniz, işlemleri sonlandırın ve yeni bir başlangıç ​​yapın (buradan itibaren düzenlenir):

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

Teşekkürler, bu tam olarak sorunumu çözdü. ( stop: Unknown instance:)
Nilloc

13

Bu çalışmalı:

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

3
PHP-FPM'i bir Mac'e homebrew aracılığıyla kurduysanız, ilk komut boşaltma + yükleme işleminden çok daha iyi çalışır
Alan Ivey 21

OSX:killall php-fpm
saat

OSX’de yukarıdaki hata bana "Bilinmeyen kullanıcı SR2" hatası verdi. Argümanları tersine çevirmek sorunu çözdü: "pkill -USR2 -o php-fpm"
Keeth

FPM'yi bir kapta yeniden başlatmak için tam olarak ihtiyacım olan şey, teşekkürler!
Adrian Günter

Homebrew aracılığıyla önceden yüklenmiş veya xcode, php sürümü ve bununla ilişkili -fpm paketiyle birlikte kullanıyorum. Sadece zaten olanları kullanmam gerektiğini düşündüm. Bir php-fpm --prefix /usr/localdizini kullanıyorum , ihtiyacı olanın altında bazı dizinler yapıyorum ve @Keeth'in dediği gibi pkill -USR2 -o php-fpm, kontrol ediyor pgrep -l fpmve PID'ler de değişiyor! Diğer bazı cevapların bahsettiği avantajlardan hiçbiri hoşuna gitmedi.
Pysis


12

Php7-fpm'yi yeniden başlatırken bir sorunla karşılaştım, çünkü tam olarak servisin nasıl adlandırıldığını bilmiyordum. Bu fonksiyon bana cevap verdi:

service --status-all

Ubuntu'daki php7-fpm servisi çağrıldı php7.0-fpm, ben de yaptım:

service php7.0-fpm restart


5
+1 içinservice --status-all
JD

6

Ana prosese USR2 sinyali gönderirseniz php-fpm yeniden başlatılır:

sudo kill -USR2 php-fpm_main_process_id

Bu yüzden php-fpm’ye parasını bir yere kaydetmesi talimatını vermeliyiz. Bu örnekte, kaydetmek istediğinizi varsayalım /etc/private/php-fpm.pidve php-fpm kullanıcısı _php kullanıcısı olarak çalışır. İlk önce bu satırı yapılandırma dosyasına ekleyin:

pid = /etc/php-fpm.pid

Sonra dosyayı oluşturun /etc/php-fpm.pidve php-fpm'nin dosyayı değiştirme izninin olduğundan emin olun:

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

Şimdi, bir dahaki sefere php-fpm başladığında, iadesini alabilecek ve şu şekilde yeniden başlatabileceksiniz:

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

Veya bunları tek bir komutta birleştirebilirsiniz:

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

@ Dialt0ne ve @ Keeth'in pkill ...cevabını ve yukarıdaki yorumunu beğeniyorum ; daha kısa ve daha basit.
Pysis

bu daha iyi ve güzel bir açıklama. pkill, süreçleri doğru şekilde eşleştiremezseniz, aynı kutu üzerinde çalıştırmaları durumunda diğer PHP kümelerinizi öldürme riskini de beraberinde getirir (evet bu kötü bir uygulamadır).
Rich K.

3

Benim için sadece apt ile yükseltilmiş ve hizmet yeniden başlatma işe yaramadı. Kullanılmadan önce var olan süreçleri öldürmek zorunda kaldım: killall php5-fpm


2

PHP-FPM yeniden başlatma komut dosyasının çalışmasına izin vermek için php-fpm.conf dosyanızda bir PID dosyası kullanmanız gerekir. yani

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

Php-fpm.conf dosyasındaki pid için varsayılan değer hiçbir şey değildir; bu, bir PID dosyası oluşturmamak anlamına gelir; bu, yeniden başlatma komut dosyasının yeniden başlatma sırasında hangi işlemin biteceğini söyleyemeyeceği anlamına gelir.


2

CentOS 7'de

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

Ubuntu 16'da php 5.6 fpm ile.

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

1

RedHat / CentOS 7'de softwarecollections.org'dan PHP 7 kullanarak

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

ya da systemctl kullanıyorsanız:

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 hizmetinin adını bulmanın en kolay yolu onu aramaktır:

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

2
Sen yapabilir daha basit:systemctl list-units *fpm*
Michael Hampton

0

Windows'ta:

  1. Yönetim Konsolunda Hizmetleri Aç:

    Start -> Run -> "services.msc" -> OK
    
  2. Seçin php-fpmlisteden

  3. Sağ tıklayıp yeniden başlat'ı seçin

0

Debian & ubuntu'nun eski versiyonları için - php 5.6

 /etc/init.d/php-fpm56 restart
 service php-fpm56 restart

0

Nginx ile Alpine üzerinde bu çalışıyor:

Tüm php-fpm7 işlemlerini öldürmek için:

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

Php-fpm7'yi başlatmak için:

php-fpm7


0

CentOS / RHEL 7.x + kullanımında sistem hizmetlerini listelemek için

systemctl

Tüm hizmetleri listelemek için:

systemctl list-unit-files

* Php-fpm * isimli servisi bulabileceğiniz servis adını kopyalayın ve aşağıdaki komutu çalıştırın.

systemctl yeniden başlat ea-php72-php-fpm.service

NOT: ea-php72-php-fpm.service kullanıcısı servis adınızı


-2

MaxOS için başka bir yöntem

ActivityMonitor'u açın, php-fpm'de arama yapın, ödemeyi bulun.

Terminali aç, kill [pid]php-fpm'yi durdurmak için kullan

Sonra php-fpmbaşlatmak için terminalde.

127.0.0.1:9000 Zaten kullanımda olan hata bilgileri varsa, bunu görmezden gelin.

Nginx sayfasını yenile, php.ini değişikliklerinin etkili olduğunu görmelisin.


MaxOS Nedir? Sadece koşmak php-fpmbüyük olasılıkla yanlış kullanıcı altında çalışacaktır; Hata mesajlarını dikkate almamak asla iyi bir fikir değildir.
Gerald Schneider
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.