คุณจะเริ่ม php-fpm ใหม่ได้อย่างไร


184

ฉันต้องโหลด php.ini ใหม่และไม่มีอะไรในกล่องโต้ตอบความช่วยเหลือเกี่ยวกับการเริ่มต้นใหม่

คำตอบ:


335

หมายเหตุ : prepend 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
    
  • ใช้พุ่งพรวด (เช่น 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 (เซิร์ฟเวอร์ใหม่กว่า):

    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 brew services restart php56(หากคุณได้รับข้อผิดพลาดเกี่ยวกับสูตรที่ไม่มีให้ลองใช้รุ่นอื่นเช่น php5 หรือ php55) หากคุณไม่ได้ติดตั้งบริการก่อควรติดตั้งให้คุณในการเรียกใช้ครั้งแรก
Doktor J

ไม่มีข้อใดถูกใช้งานได้สำหรับฉัน แต่สิ่งนี้ทำ: service php-fcgi-mydomain-com restartและฉันต้องทำซ้ำสำหรับทุกโดเมนจากเว็บไซต์ที่เปิดใช้งาน
Ilyich

อันนี้เป็นอันที่ดีสำหรับฉัน (centOs):systemctl reload php70-php-fpm
4wk_

ฉันใช้ Ubuntu 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 ของคุณ

จากนั้นเพียงแค่เรียกมันจาก terminal 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
หากคุณติดตั้ง PHP-FPM ผ่าน homebrew บน Mac คำสั่งแรกจะใช้งานได้ดีกว่าการยกเลิกการโหลด + load'ing plist
Alan Ivey

OSX:killall php-fpm
ptim

บน OSX ข้างต้นทำให้ฉันมีข้อผิดพลาด "ไม่ทราบผู้ใช้ SR2" การย้อนกลับอาร์กิวเมนต์ได้รับการแก้ไข: "pkill -USR2 -o php-fpm"
Keeth

สิ่งที่ฉันต้องการในการรีสตาร์ท FPM ในคอนเทนเนอร์แน่นอนขอบคุณ!
Adrian Günter

ฉันใช้ติดตั้งไว้ล่วงหน้าหรือรวมกับ xcode, รุ่นของ php และที่เกี่ยวข้อง -fpm ด้วยเหตุผลบางอย่างและไม่ผ่าน Homebrew แค่คิดว่าฉันควรใช้สิ่งที่มีอยู่แล้ว ฉันกำลังใช้การรวมกันของphp-fpm --prefix /usr/localการทำให้ไดเรกทอรีบางอย่างภายใต้ที่มันต้องการและตามที่ @Kyo ได้ระบุไว้pkill -USR2 -o php-fpmตรวจสอบกับpgrep -l fpmและ PIDs จะเปลี่ยนแน่นอน! ฉันไม่มีไฟล์ plist หรือบริการใด ๆ เพื่อใช้ประโยชน์จากคำตอบอื่น ๆ
Pysis


12

ฉันมีปัญหาในการรีสตาร์ท php7-fpm เพราะฉันไม่รู้ว่าบริการชื่อนั้นเป็นอย่างไร ฟังก์ชั่นนี้ให้คำตอบกับฉัน:

service --status-all

บริการ php7-fpm ใน Ubuntu ของฉันถูกเรียกใช้php7.0-fpmดังนั้นฉันจึง:

service php7.0-fpm restart


5
+1 สำหรับservice --status-all
JD

6

php-fpm จะรีสตาร์ทถ้าคุณส่งสัญญาณ USR2 ไปยังกระบวนการหลัก:

sudo kill -USR2 php-fpm_main_process_id

ดังนั้นเราต้องสั่ง php-fpm เพื่อบันทึก pid ไว้ที่ไหนสักแห่ง ในตัวอย่างนี้ฉันจะสมมติว่าคุณต้องการบันทึก/etc/private/php-fpm.pidและ php-fpm นั้นจะทำงานเหมือน user _php ก่อนอื่นให้เพิ่มบรรทัดนี้ลงในไฟล์กำหนดค่า:

pid = /etc/php-fpm.pid

จากนั้นสร้างไฟล์/etc/php-fpm.pidและตรวจสอบให้แน่ใจว่า php-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's และpkill ...คำตอบและความคิดเห็นของ @ Keeth ด้านบนมากกว่านี้; สั้นและเรียบง่าย
Pysis

นี่เป็นคำอธิบายที่ดีกว่าและดี pkill มีความเสี่ยงหากคุณไม่ได้รับกระบวนการที่ตรงกันอย่างถูกต้องฆ่ากลุ่ม PHP อื่น ๆ ของคุณหากคุณมีพวกเขาทำงานในกล่องเดียวกัน (ใช่นี่คือการปฏิบัติที่ไม่ดี)
Rich K.

3

สำหรับฉันฉันเพิ่งอัพเกรดผ่าน apt และการรีสตาร์ทเซอร์วิสไม่ทำงาน ฉันต้องการฆ่ากระบวนการที่มีอยู่ก่อนที่จะทำงานโดยใช้: killall php5-fpm


2

เพื่อให้สคริปต์รีสตาร์ท PHP-FPM ทำงานคุณต้องใช้ระบุไฟล์ PID ในไฟล์ php-fpm.conf ของคุณ กล่าวคือ

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

ค่าเริ่มต้นสำหรับ pid ใน php-fpm.conf คืออะไรซึ่งหมายถึงการไม่สร้างไฟล์ 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


1

ใน RedHat / CentOS 7 โดยใช้PHP 7 จาก 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

หรือถ้าคุณใช้ 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

สำหรับเดเบียนเวอร์ชั่นเก่า & ubuntu - php 5.6 จะเป็นเช่นนั้น

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

0

บนอัลไพน์ด้วย nginx นี่ทำงานได้ที่นี่

หากต้องการฆ่ากระบวนการ php-fpm7 ทั้งหมด:

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

ในการเริ่ม php-fpm7:

php-fpm7


0

ในการแสดงรายการ systemd services บน CentOS / RHEL 7.x + ให้ใช้

systemctl

ในการแสดงรายการบริการทั้งหมด:

systemctl list-unit-files

ที่ซึ่งคุณสามารถค้นหาบริการชื่อ * php-fpm * คัดลอกชื่อบริการแล้วเรียกใช้คำสั่งต่อไปนี้

systemctl รีสตาร์ท ea-php72-php-fpm.service

หมายเหตุ: ea-php72-php-fpm.serviceใช้ชื่อบริการของคุณ


-2

วิธีอื่นสำหรับ MaxOS

เปิด ActivityMonitor ค้นหา php-fpm ค้นหา pid

เปิดเทอร์มินัลใช้kill [pid]เพื่อหยุด php-fpm

จากนั้นphp-fpmใน terminal เพื่อเริ่มต้นมัน

หากมีข้อมูลข้อผิดพลาดที่ 127.0.0.1:9000 มีการใช้งานอยู่แล้วให้เพิกเฉย

รีเฟรชหน้า Nginx ควรเห็นการเปลี่ยนแปลง php.ini มีผล


MaxOS คืออะไร การรันเพียงอย่างเดียวphp-fpmอาจเป็นการรันภายใต้ผู้ใช้ที่ไม่ถูกต้อง การเพิกเฉยต่อข้อความผิดพลาดไม่ใช่ความคิดที่ดี
Gerald Schneider
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.