Як перезапустити php-fpm?


184

Мені потрібно перезавантажити php.ini, і в діалоговому вікні довідки про її перезапуск немає нічого.

Відповіді:


335

Примітка : додайте, 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
    
  • Використання Upstart (наприклад, 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І я повинен був повторити його для кожного домену з включених сайтів
Ілліч

Цей для мене був хороший (центО):systemctl reload php70-php-fpm
4wk_

Я на Ubuntu 16.04, і це, здавалося, спрацювало: systemctl restart php5.6-fpm.service
перейдіть

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

то просто зателефонуйте з терміналу fpm-restart та BOOM !!


4
Використовуйте, homebrew.mxcl.php*.plistякщо це не працює
Данило Рижков,

github.com/Homebrew/homebrew-php#installing-multiple-versions - це випадок, коли ви не можете знайти ths .plist файл.
Френк Фанг

служби пивоваріння в основному робить те, що робить ваш сценарій.
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, перша команда працює набагато краще, ніж вивантажувати + завантажувати список
Alan Ivey

OSX:killall php-fpm
ptim

На OSX вищезгадане подало мені помилку "Невідомий користувач SR2". Повернення аргументів виправлено: "pkill -USR2 -o php-fpm"
Кіт

Саме те, що мені було потрібно, щоб перезапустити FPM в контейнері, дякую!
Адріан Гюнтер

Я використовую попередньо встановлену або в комплекті з xcode, версію php та пов'язане з нею -fpm чомусь, а не через Homebrew. Просто подумав, що я повинен використовувати те, що вже є. Я використовую комбінацію php-fpm --prefix /usr/local, створюю деякі каталоги під тим, який їй потрібен, і, як заявив @Keeth pkill -USR2 -o php-fpm, перевіряючи pgrep -l fpm, і PIDs дійсно змінюються! У мене не було файлів чи служб-плістів, щоб скористатися згаданими іншими відповідями.
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`

Мені подобаються pkill ...відповіді та коментарі @ dialt0ne та @ Keeth вище; коротше і простіше.
Pysis

це краще, і приємне пояснення. pkill ризикує, якщо ви не довідаєтеся відповідних процесів правильно, знищити ваші інші кластери PHP, якщо у вас трапляється, що вони працюють у тому ж полі (так, це погана практика).
Річ К.

3

Для мене я щойно оновився через apt і перезапуск служби не працював. Мені довелося вбити існуючі процеси, перш ніж він працював, використовуючи: killall php5-fpm


2

Щоб дозволити роботі сценарію перезапуску PHP-FPM, потрібно використовувати у файлі php-fpm.conf файл PID. тобто

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


0

У Windows:

  1. Відкриті служби на консолі управління:

    Start -> Run -> "services.msc" -> OK
    
  2. Виберіть php-fpmзі списку

  3. Клацніть правою кнопкою миші та виберіть перезапуск


0

На Alpine з nginx це працює тут:

Щоб знищити всі процеси php-fpm7:

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

Щоб запустити php-fpm7:

php-fpm7


0

Для переліку системних служб на CentOS / RHEL 7.x + використовуйте

systemctl

Щоб перелічити всі послуги:

systemctl список-блок-файли

Там, де ви можете знайти службу з назвою * 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на терміналі, щоб запустити його.

Якщо є інформація про помилку, що 127.0.0.1:9000 Вже використовується, просто проігноруйте це.

Оновіть сторінку Nginx, слід побачити зміни php.ini.


Що таке MaxOS? Просто запущений php-fpm, швидше за все, запустить його під невірним користувачем; ігнорування повідомлень про помилки ніколи не є хорошою ідеєю.
Джеральд Шнайдер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.