Как перезапустить php в ubuntu

Обновлено: 07.07.2024

I need to reload my php.ini and there's nothing in the help dialog about restarting it.

1,983 2 2 gold badges 12 12 silver badges 10 10 bronze badges Comments disabled on deleted / locked posts / reviews |

18 Answers 18

Note: prepend sudo if not root

Using SysV Init scripts directly:

Using service wrapper script

Using Upstart (e.g. ubuntu):

Using systemd (newer servers):

Or whatever the equivalent is on your system.

14.7k 7 7 gold badges 48 48 silver badges 71 71 bronze badges None of the above worked for me, but this did: service php-fcgi-mydomain-com restart And I had to repeat it for every domain from sites-enabled This one was the good one for me (centOs) : systemctl reload php70-php-fpm

For Mac OS X, this is what I do:

Make a script /usr/local/etc/php/fpm-restart :

make sure /usr/local/sbin is in your $PATH

then just call it from the terminal fpm-restart and BOOM!!

24.7k 12 12 gold badges 60 60 silver badges 88 88 bronze badges brew services basically does what your script does.

Usually, service php5-fpm restart will do fine, on an up-to-date distribution.

But somtimes, it fails, telling you restart: Unknown instance: (or such).

Now, if you do not like to reboot your server, just kill the processes and have a fresh start (edited as of here):

837 2 2 gold badges 11 11 silver badges 26 26 bronze badges Thanks, this fixed exactly my issue. ( stop: Unknown instance: )

This should work:

On OSX the above gave me an error "Unknown user SR2". Reversing the arguments fixed it: "pkill -USR2 -o php-fpm" Exactly what I needed to restart FPM in a container, thanks!

For Mac OSX brew services restart php56 worked for me.


I had a problem restarting php7-fpm, because I didn't knew how exactly the service was named. This function gave me the answer:

php7-fpm service in my Ubuntu was called php7.0-fpm , so I did:

service php7.0-fpm restart


php-fpm will restart if you send a USR2 signal to the main process:

So we just need to instruct php-fpm to record its pid somewhere. In this example, I'll assume you want to save it at /etc/private/php-fpm.pid , and that php-fpm runs as user _php. First, add this line to the configuration file:

Then create the file /etc/php-fpm.pid , and make sure php-fpm has permission to modify it:

Now, next time php-fpm starts, you'll be able to get its pid and restart it like this:

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

Примечание : prepend sudo , если не root

Сценарии SysV Init напрямую:

Использование сценария оболочки службы

Использование Upstart (например, ubuntu):

Использование systemd (более новые серверы):

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

Для Mac OS X это то, что я делаю:

Сделайте сценарий /usr /local /etc /php /fpm-restart :

убедитесь, что /usr /local /sbin находится в $ PATH

, то просто вызовите его с терминала fpm-restart и BOOM !!

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

Но иногда он терпит неудачу, сообщая вам о перезагрузке : Неизвестный экземпляр: (или такой).

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

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

Для Mac OSX для меня работала перезагрузка службы поддержки php56 .

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

Поэтому нам просто нужно указать php-fpm для записи своего pid где-нибудь. В этом примере я предположим, что вы хотите сохранить его в /etc/private/php-fpm.pid , а php-fpm работает как пользователь _php. Сначала добавьте эту строку в файл конфигурации:

Затем создайте файл /etc/php-fpm.pid и убедитесь, что у php-fpm есть разрешение на его изменение:

Теперь, в следующий раз, когда начнется php-fpm, вы сможете получить его pid и перезапустить его следующим образом:

Или вы можете объединить их в одну команду:

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

Служба php7-fpm в моем Ubuntu была вызвана php7.0-fpm , поэтому я сделал:

служба php7.0-fpm restart

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

Если мне надо сделать любое изменение php.ini, например добавить extension, нужно ли мне всегда перезагружать apache/nginx?

  • Вопрос задан более двух лет назад
  • 1871 просмотр

Простой 2 комментария

Maksclub

достаточно перезагрузить сам php, если юзаете как модуль апача, то апач нужно перезапустить

Максим Федоров, а апач не умеет перечитывать конфиги без остановки?

kotomyava

Nginx перезагружать не нужно.
Apache нужно перезагрузить, если используется php как модуль apache, или через mod_fcgid.
Если php запускается с помощью php-fpm, перезагружать надо только его.

OnYourLips

Нет, не нужно. Достаточно перезагрузить сервис соответствующего fpm.

kotomyava

OnYourLips

kotomyava

На самом деле, это не всегда оправдано. Да, решение хорошее, но не настолько лучшее, чтобы использовать только его.
Есть разные случаи, и бывает удобно/оправдано/необходимо использовать другие способы. Например, есть всякие панельки, которые не знают ничего о php-fpm.

OnYourLips

Борис Сёмов, легаси - отдельная тема, обычно его в контейнеры запихивают с apache и php 5.2 и не трогают, пока еще работает.

Читайте также: