Bagaimana Anda me-restart php-fpm?


184

Saya perlu memuat ulang php.ini saya dan tidak ada dalam dialog bantuan tentang memulai kembali.

Jawaban:


335

Catatan : tambahkan dulu sudojika tidak root

  • Menggunakan skrip SysV Init secara langsung:

    /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
    
  • Menggunakan skrip pembungkus layanan

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Menggunakan Pemula (mis. Ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Menggunakan systemd (server yang lebih baru):

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

Atau apa pun yang setara ada di sistem Anda.


2
Bagaimana dengan di Mac? php-fpm diinstal menggunakan homebrew. which php-fpmmemberi /usr/local/sbin/php-fpm.
hobbes3

6
@ hobbes3 coba brew services restart php56(jika Anda mendapatkan kesalahan tentang tidak ada rumus yang tersedia, coba versi yang berbeda misalnya php5 atau php55). Jika Anda tidak memiliki layanan pembuatan bir yang diinstal, itu harus menginstalnya untuk Anda saat pertama kali dijalankan.
Doktor J

Tidak satu pun di atas yang berfungsi untuk saya, tetapi ini berhasil: service php-fcgi-mydomain-com restartDan saya harus mengulanginya untuk setiap domain dari situs yang diaktifkan
Ilyich

Yang ini adalah yang bagus untuk saya (centOs):systemctl reload php70-php-fpm
4wk_

Saya di Ubuntu 16.04 dan ini sepertinya berhasil: systemctl restart php5.6-fpm.service
relipse

30

Untuk Mac OS X, inilah yang saya lakukan:

Buat skrip /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

Kemudian:

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

pastikan / usr / local / sbin dalam $ PATH Anda

maka panggil saja dari terminal fpm-restart dan BOOM !!


4
Gunakan homebrew.mxcl.php*.plistjika tidak berhasil
Daniil Ryzhkov

github.com/Homebrew/homebrew-php#installing-multiple-versions adalah kasus Anda tidak dapat menemukan file .splist.
Frank Fang

layanan minuman pada dasarnya melakukan apa yang dilakukan skrip Anda.
Qiulang

22

Biasanya, service php5-fpm restartakan baik-baik saja, pada distribusi terkini.

Tetapi kadang-kadang, gagal, memberi tahu Anda restart: Unknown instance:(atau semacamnya).

Sekarang, jika Anda tidak suka untuk me-reboot server Anda, matikan saja prosesnya dan mulailah dari awal baru (diedit sampai di sini):

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

Terima kasih, ini memperbaiki masalah saya. ( stop: Unknown instance:)
Nilloc

13

Ini seharusnya bekerja:

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

3
Jika Anda menginstal PHP-FPM melalui homebrew pada Mac, perintah pertama bekerja jauh lebih baik daripada membongkar + memuat plist
Alan Ivey

OSX:killall php-fpm
ptim

Pada OSX di atas memberi saya kesalahan "Pengguna tidak dikenal SR2". Membalik argumen yang memperbaikinya: "pkill -USR2 -o php-fpm"
Keeth

Persis seperti yang saya butuhkan untuk memulai ulang FPM dalam sebuah wadah, terima kasih!
Adrian Günter

Saya menggunakan versi pra-instal, atau dibundel dengan xcode, php dan terkait -fpm untuk beberapa alasan, dan tidak melalui Homebrew. Hanya berpikir saya harus menggunakan apa yang sudah ada di sana. Saya menggunakan kombinasi php-fpm --prefix /usr/local, membuat beberapa direktori di bawah yang dibutuhkannya, dan seperti @Keeth telah menyatakan pkill -USR2 -o php-fpm, memeriksa dengan pgrep -l fpm, dan PID memang berubah! Saya tidak punya file atau layanan plist untuk mengambil keuntungan dari disebutkan oleh beberapa jawaban lain.
Pysis


12

Saya punya masalah memulai ulang php7-fpm, karena saya tidak tahu bagaimana tepatnya nama layanan itu. Fungsi ini memberi saya jawabannya:

service --status-all

Layanan php7-fpm di Ubuntu saya dipanggil php7.0-fpm, jadi saya lakukan:

service php7.0-fpm restart


5
+1 untukservice --status-all
JD

6

php-fpm akan memulai kembali jika Anda mengirim sinyal USR2 ke proses utama:

sudo kill -USR2 php-fpm_main_process_id

Jadi kita hanya perlu menginstruksikan php-fpm untuk merekam pid-nya di suatu tempat. Dalam contoh ini, saya anggap Anda ingin menyimpannya di /etc/private/php-fpm.pid, dan php-fpm berjalan sebagai pengguna _php. Pertama, tambahkan baris ini ke file konfigurasi:

pid = /etc/php-fpm.pid

Kemudian buat file /etc/php-fpm.pid, dan pastikan php-fpm memiliki izin untuk memodifikasinya:

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

Sekarang, lain kali php-fpm dimulai, Anda akan bisa mendapatkan pid dan memulai kembali seperti ini:

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

Atau Anda dapat menggabungkan ini menjadi satu perintah:

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

Saya suka @ dialt0ne dan @ Keeth's pkill ...jawaban & komentar di atas; lebih pendek dan lebih sederhana.
Pysis

ini penjelasan yang lebih baik dan bagus. pkill menjalankan risiko, jika Anda tidak mendapatkan proses yang cocok dengan benar, membunuh cluster PHP Anda yang lain jika Anda kebetulan menjalankannya di kotak yang sama (ya ini adalah praktik yang buruk).
Rich K.

3

Bagi saya, saya baru saja meningkatkan melalui apt dan restart layanan tidak berfungsi. Saya akhirnya perlu untuk membunuh proses yang ada sebelum bekerja menggunakan: killall php5-fpm


2

Agar skrip restart PHP-FPM berfungsi, Anda harus menggunakan tentukan file PID di file php-fpm.conf Anda. yaitu

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

Nilai default untuk pid di php-fpm.conf bukanlah apa-apa, yang berarti tidak membuat file PID, yang berarti bahwa skrip restart tidak dapat memberi tahu proses mana yang harus berakhir selama restart.


2

Pada 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

Di Ubuntu 16 dengan php 5,6 fpm.

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

1

Di RedHat / CentOS 7 menggunakan PHP 7 dari 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

atau jika Anda menggunakan 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

Cara paling sederhana untuk menemukan nama layanan php-fpm adalah mencarinya:

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

2
Anda dapat membuatnya lebih sederhana:systemctl list-units *fpm*
Michael Hampton

0

Di Windows:

  1. Layanan Terbuka di Konsol Manajemen:

    Start -> Run -> "services.msc" -> OK
    
  2. Pilih php-fpmdari daftar

  3. Klik kanan dan pilih mulai ulang

0

Untuk versi lama dari debian & ubuntu - php 5.6

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

0

Di Alpine dengan nginx ini berfungsi di sini:

Untuk mematikan semua proses php-fpm7:

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

Untuk memulai php-fpm7:

php-fpm7


0

Untuk mendaftar layanan systemd pada CentOS / RHEL 7.x + gunakan

systemctl

Untuk membuat daftar semua layanan:

systemctl daftar-unit-file

Di mana Anda dapat menemukan layanan bernama * php-fpm * salin nama layanan dan jalankan perintah berikut

systemctl restart ea-php72-php-fpm.service

CATATAN: ea-php72-php-fpm.service pengguna nama layanan Anda


-2

Metode lain untuk MaxOS

Buka ActivityMonitor, cari php-fpm, cari pid.

Buka terminal, gunakan kill [pid]untuk menghentikan php-fpm

Kemudian php-fpmdi terminal untuk memulainya.

Jika ada informasi kesalahan yang 127.0.0.1:9000 Sudah digunakan, abaikan saja.

Refresh halaman Nginx, seharusnya melihat perubahan php.ini berpengaruh.


Apa itu MaxOS? Menjalankan saja php-fpmkemungkinan besar akan menjalankannya di bawah pengguna yang salah; mengabaikan pesan kesalahan tidak pernah merupakan ide yang baik.
Gerald Schneider
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.