Làm thế nào để bạn khởi động lại php-fpm?


184

Tôi cần tải lại php.ini của mình và không có gì trong hộp thoại trợ giúp về việc khởi động lại nó.

Câu trả lời:


335

Lưu ý : trả trước sudonếu không root

  • Sử dụng tập lệnh SysV init trực tiếp:

    /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
    
  • Sử dụng tập lệnh bao bọc dịch vụ

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Sử dụng Upstart (ví dụ: Ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Sử dụng systemd (máy chủ mới hơn):

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

Hoặc bất cứ điều gì tương đương là trên hệ thống của bạn.


2
Còn trên máy Mac thì sao? php-fpm đã được cài đặt bằng homebrew. which php-fpmcho /usr/local/sbin/php-fpm.
hobbes3

6
@ hobbes3 thử brew services restart php56(nếu bạn gặp lỗi về việc không có công thức có sẵn, hãy thử một phiên bản khác, ví dụ: php5 hoặc php55). Nếu bạn chưa cài đặt dịch vụ pha chế, bạn nên cài đặt nó cho bạn ngay lần chạy đầu tiên.
Doktor J

Không có cái nào ở trên làm việc cho tôi, nhưng điều này đã làm: service php-fcgi-mydomain-com restartVà tôi đã phải lặp lại nó cho mọi tên miền từ các trang web được kích hoạt
Ilyich

Đây là một trong những tốt cho tôi (centOs):systemctl reload php70-php-fpm
4wk_

Tôi đang sử dụng Ubuntu 16.04 và điều này dường như hoạt động: systemctl restart php5.6-fpm.service
tái hiện

30

Đối với Mac OS X, đây là những gì tôi làm:

Tạo một kịch bản /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

Sau đó:

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

đảm bảo / usr / local / sbin nằm trong $ PATH của bạn

sau đó chỉ cần gọi nó từ thiết bị đầu cuối fpm-restart và BOOM !!


4
Sử dụng homebrew.mxcl.php*.plistnếu nó không hoạt động
Daniil Ryzhkov

github.com/Homebrew/homebrew-php#installing-multipl-versions là trường hợp bạn không thể tìm thấy tập tin .plist.
Frank Fang

dịch vụ sản xuất bia về cơ bản làm những gì kịch bản của bạn làm.
Qiulang

22

Thông thường, service php5-fpm restartsẽ làm tốt, trên một phân phối cập nhật.

Nhưng đôi khi, nó thất bại, nói với bạn restart: Unknown instance:(hoặc như vậy).

Bây giờ, nếu bạn không muốn khởi động lại máy chủ của mình, chỉ cần hủy các tiến trình và có một khởi đầu mới (được chỉnh sửa tại đây):

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

Cảm ơn, điều này đã sửa chính xác vấn đề của tôi. ( stop: Unknown instance:)
Nilloc

13

Điều này sẽ làm việc:

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

3
Nếu bạn đã cài đặt PHP-FPM thông qua homebrew trên máy Mac, lệnh đầu tiên hoạt động tốt hơn rất nhiều so với việc tải + tải số nguyên bản
Alan Ivey

OSX:killall php-fpm
ptim

Trên OSX ở trên đã cho tôi một lỗi "Người dùng không xác định SR2". Đảo ngược các đối số đã sửa nó: "pkill -USR2 -o php-fpm"
Keeth

Chính xác những gì tôi cần để khởi động lại FPM trong một container, cảm ơn!
Adrian Günter

Tôi đang sử dụng bản cài đặt sẵn, hoặc đi kèm với xcode, phiên bản php và liên kết -fpm của nó vì một số lý do, và không thông qua Homebrew. Chỉ cần nghĩ rằng tôi nên sử dụng những gì đã có. Tôi đang sử dụng kết hợp php-fpm --prefix /usr/local, tạo một số thư mục theo thư mục mà nó cần, và như @Keeth đã tuyên bố pkill -USR2 -o php-fpm, kiểm tra pgrep -l fpmvà các PID thực sự thay đổi! Tôi không có tập tin hay dịch vụ nào để tận dụng được đề cập bởi một số câu trả lời khác.
Pysis


12

Tôi gặp sự cố khi khởi động lại php7-fpm, vì tôi không biết chính xác dịch vụ được đặt tên như thế nào. Hàm này đã cho tôi câu trả lời:

service --status-all

Dịch vụ php7-fpm trong Ubuntu của tôi đã được gọi php7.0-fpm, vì vậy tôi đã làm:

service php7.0-fpm restart


5
+1 choservice --status-all
JD

6

php-fpm sẽ khởi động lại nếu bạn gửi tín hiệu USR2 đến quy trình chính:

sudo kill -USR2 php-fpm_main_process_id

Vì vậy, chúng ta chỉ cần hướng dẫn php-fpm để ghi lại pid của nó ở đâu đó. Trong ví dụ này, tôi sẽ giả sử bạn muốn lưu nó tại /etc/private/php-fpm.pidvà php-fpm chạy dưới dạng người dùng _php. Đầu tiên, thêm dòng này vào tệp cấu hình:

pid = /etc/php-fpm.pid

Sau đó tạo tệp /etc/php-fpm.pidvà đảm bảo php-fpm có quyền sửa đổi nó:

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

Bây giờ, khi php-fpm tiếp theo bắt đầu, bạn sẽ có thể lấy pid và khởi động lại như thế này:

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

Hoặc bạn có thể kết hợp chúng thành một lệnh duy nhất:

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

Tôi thích pkill ...câu trả lời và nhận xét của @ dialt0ne và @ Keeth hơn ở trên; ngắn hơn và đơn giản hơn
Pysis

Điều này là tốt hơn, và giải thích tốt đẹp. pkill sẽ gặp rủi ro, nếu bạn không xử lý đúng các quy trình, giết chết các cụm PHP khác của bạn nếu bạn tình cờ chạy chúng trên cùng một hộp (vâng, đây là cách làm không tốt).
Giàu

3

Đối với tôi, tôi vừa nâng cấp qua apt và khởi động lại dịch vụ không hoạt động. Cuối cùng tôi cần phải giết các tiến trình hiện có trước khi nó hoạt động bằng cách sử dụng: killall php5-fpm


2

Để cho phép tập lệnh khởi động lại PHP-FPM hoạt động, bạn phải sử dụng chỉ định tệp PID trong tệp php-fpm.conf của mình. I E

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

Giá trị mặc định cho pid trong php-fpm.conf là không có nghĩa là không tạo tệp PID, điều đó có nghĩa là tập lệnh khởi động lại không thể cho biết quá trình nào sẽ kết thúc trong quá trình khởi động lại.


2

Trên 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

Trên Ubuntu 16 với php 5.6 fpm.

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

1

Trên RedHat / CentOS 7 bằng PHP 7 từ 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

hoặc nếu bạn đang sử dụng 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

Cách đơn giản nhất để tìm tên của dịch vụ php-fpm là tìm kiếm nó:

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

2
Bạn có thể làm cho nó đơn giản hơn:systemctl list-units *fpm*
Michael Hampton

0

Trên Windows:

  1. Dịch vụ mở trong Bảng điều khiển quản lý:

    Start -> Run -> "services.msc" -> OK
    
  2. Chọn php-fpmtừ danh sách

  3. Nhấp chuột phải và chọn khởi động lại

0

Đối với các phiên bản cũ của debian & ubfox - php 5.6, nó sẽ là

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

0

Trên núi Alps với nginx điều này đang hoạt động ở đây:

Để tiêu diệt tất cả các quy trình php-fpm7:

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

Để bắt đầu php-fpm7:

php-fpm7


0

Để liệt kê các dịch vụ systemd trên CentOS / RHEL 7.x + sử dụng

hệ thống

Để liệt kê tất cả các dịch vụ:

danh sách đơn vị systemctl

Nơi bạn có thể tìm thấy dịch vụ có tên * php-fpm * sao chép tên dịch vụ và chạy lệnh sau

systemctl khởi động lại ea-php72-php-fpm.service

LƯU Ý: ea-php72-php-fpm.service người dùng tên dịch vụ của bạn


-2

Một phương pháp khác cho MaxOS

Mở ActivityMonitor, tìm kiếm php-fpm, tìm pid.

Mở terminal, sử dụng kill [pid]để dừng php-fpm

Sau đó php-fpmtrên thiết bị đầu cuối để bắt đầu nó.

Nếu có thông tin lỗi 127.0.0.1:9000 Đã sử dụng, chỉ cần bỏ qua.

Làm mới trang Nginx, sẽ thấy các thay đổi php.ini có hiệu lực.


MaxOS là gì? Chỉ cần chạy php-fpmcó thể sẽ chạy nó theo người dùng sai; bỏ qua các thông báo lỗi không bao giờ là một ý tưởng tốt.
Gerald Schneider
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.