Назад | Перейти на главную страницу

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

Мне нужно перезагрузить свой php.ini, а в диалоговом окне справки ничего не говорится о его перезапуске.

Заметка: 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
    
  • Используя 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
    

Или любой другой эквивалент в вашей системе.

Для 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 и БУМ !!

Обычно, service php5-fpm restart будет хорошо, на актуальном дистрибутиве.

Но иногда это не удается, говоря вам restart: Unknown instance: (или такой).

Теперь, если вам не нравится перезагружать сервер, просто завершите процессы и начните заново (отредактировано здесь):

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

Это должно работать:

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

Для Mac OSX brew services restart php56 работал у меня.

У меня возникла проблема с перезапуском php7-fpm, потому что я не знал, как именно была названа служба. Эта функция дала мне ответ:

service --status-all

Сервис php7-fpm в моем Ubuntu назывался php7.0-fpm, так я и сделал:

service php7.0-fpm restart

php-fpm перезапустится, если вы отправите сигнал USR2 основному процессу:

sudo kill -USR2 php-fpm_main_process_id

Поэтому нам просто нужно указать php-fpm, чтобы он где-то записывал свой pid. В этом примере я предполагаю, что вы хотите сохранить его в /etc/private/php-fpm.pid, и что php-fpm запускается от имени пользователя _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`

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

На Ubuntu 16 с php 5.6 fpm.

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

На 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

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

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

Значение по умолчанию для pid в php-fpm.conf ничего, что означает, что файл PID не создается, а это означает, что сценарий перезапуска не может определить, какой процесс завершить во время перезапуска.

Самый простой способ найти имя сервиса php-fpm - это найти его:

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

В 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

В Alpine с nginx это работает:

Чтобы убить все процессы php-fpm7:

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

Чтобы запустить php-fpm7:

php-fpm7

Для старых версий debian и ubuntu - php 5.6 это будет

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

В Windows:

  1. Откройте службы в консоли управления:

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

  3. Щелкните правой кнопкой мыши и выберите перезапуск

Чтобы вывести список сервисов systemd в CentOS / RHEL 7.x +, используйте

systemctl

Чтобы перечислить все услуги:

systemctl список-единиц-файлов

Где вы можете найти службу с именем * php-fpm *, скопируйте имя службы и выполните следующую команду

systemctl перезапустить ea-php72-php-fpm.service

НОТА : ea-php72-php-fpm.service введите имя вашей службы

Другой способ для MaxOS

Откройте ActivityMonitor, найдите php-fpm, найдите pid.

Откройте терминал, используйте kill [pid] остановить php-fpm

затем php-fpm на терминале, чтобы запустить его.

Если есть информация об ошибке, 127.0.0.1:9000 уже используется, просто проигнорируйте это.

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