Bagaimana Anda me-restart php-fpm?

184

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

Galen
sumber

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.

tylerl
sumber
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 !!

Diego Antunes
sumber
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
BurninLeo
sumber
Terima kasih, ini memperbaiki masalah saya. ( stop: Unknown instance:)
Nilloc
13

Ini seharusnya bekerja:

pkill -o -USR2 php-fpm
pkill -o -USR2 php5-fpm
dialt0ne
sumber
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

Untuk Mac OSX brew services restart php56bekerja untuk saya.

Blake Frederick
sumber
1
ya, bekerja untuk saya juga. Mac osx
Mike Nguyen
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

Lucas
sumber
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`
Pitarou
sumber
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

Anjing
sumber
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.

Danack
sumber
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
Fokwa Terbaik
sumber
2

Di Ubuntu 16 dengan php 5,6 fpm.

 /etc/init.d/php5.6-fpm restart
MrPHP
sumber
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
Jeremy Tarpley
sumber
1

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

systemctl -l --type service --all | grep fpm
Saman Mohamadi
sumber
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
Gerald Schneider
sumber
0

Untuk versi lama dari debian & ubuntu - php 5.6

 /etc/init.d/php-fpm56 restart
 service php-fpm56 restart
Nicolas Guérinet
sumber
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

Junior M
sumber
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

Rj_Innocent_Coder
sumber
-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.

Hiu Deng
sumber
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