182

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

Galen
  • 1,973

18 Answers18

334

Note: prepend sudo if not root

  • Using SysV Init scripts directly:

    /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
    
  • Using service wrapper script

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • Using Upstart (e.g. ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • Using systemd (newer servers):

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

Or whatever the equivalent is on your system.

tylerl
  • 15,245
30

For Mac OS X, this is what I do:

Make a script /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

Then:

chmod ug+x /usr/local/etc/php/fpm-restart
cd /usr/local/sbin
ln -s /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!!

Falcon Momot
  • 25,584
22

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):

$ sudo pkill php5-fpm; sudo service php5-fpm start
BurninLeo
  • 940
  • 3
  • 12
  • 31
13

This should work:

pkill -o -USR2 php-fpm
pkill -o -USR2 php5-fpm
dialt0ne
  • 3,075
12

For Mac OSX brew services restart php56 worked for me.

11

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

service --status-all

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

service php7.0-fpm restart

Gediminas
  • 217
6

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

sudo kill -USR2 php-fpm_main_process_id

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:

pid = /etc/php-fpm.pid

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

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

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

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

Or you can combine these into a single command:

$ sudo kill -USR2 `cat /etc/private/php-fpm.pid`
Pitarou
  • 161
3

For me I had just upgraded via apt and the service restart wasn't working. I ended up needing to kill the existing processes before it worked using: killall php5-fpm

Pooch
  • 161
  • 2
2

To allow the PHP-FPM restart script to work, you must use specify a PID file in your php-fpm.conf file. i.e.

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

The default value for pid in php-fpm.conf is nothing, which means to not create a PID file, which means that the restart script can't tell which process to end during the restart.

Danack
  • 1,226
  • 1
  • 16
  • 27
2

On 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

On Ubuntu 16 with php 5.6 fpm.

 /etc/init.d/php5.6-fpm restart
MrPHP
  • 163
1

On RedHat / CentOS 7 using PHP 7 from 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

or if you're using 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

The simplest way to find the name of php-fpm service is to search for it:

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

For old versions of debian & ubuntu - php 5.6 it will be

 /etc/init.d/php-fpm56 restart
 service php-fpm56 restart
Michael Hampton
  • 252,907
0

On Windows:

  1. Open Services in the Management Console:

    Start -> Run -> "services.msc" -> OK
    
  2. Select php-fpm from the list

  3. Rightclick and select restart
Gerald Schneider
  • 26,582
  • 8
  • 65
  • 97
0

On Alpine with nginx this is working here:

To kill all php-fpm7 processes:

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

To start php-fpm7:

php-fpm7

0

To list systemd services on CentOS/RHEL 7.x+ use

systemctl

To list all services:

systemctl list-unit-files

Where you can find service named * php-fpm * copy service name and run the following command

systemctl restart ea-php72-php-fpm.service

NOTE : ea-php72-php-fpm.service user your service name

-2

Another method for MaxOS

Open ActivityMonitor, search php-fpm, find the pid.

Open terminal, use kill [pid] to stop php-fpm

Then php-fpm on terminal to start it.

If there is error information that 127.0.0.1:9000 Already in use, just ignore that.

Refresh Nginx page, should see php.ini changes take effects.