PHP-FPM (PHP FastCGI Process Manager) is a powerful and widely used process manager for PHP, often favored for its speed and ability to handle high-traffic websites. Knowing how to restart PHP-FPM is crucial for developers and system administrators, especially when applying changes to PHP configurations, resolving issues, or performing routine maintenance. In this article, we will explore several methods to restart PHP-FPM on different systems and in different environments.
Why Restart PHP-FPM?
Before diving into the methods, let’s briefly discuss why restarting PHP-FPM might be necessary:
- Configuration Changes: If you modify PHP settings in the php.ini or php-fpm.conf files, a restart is required for the changes to take effect.
- Performance Optimization: Restarting PHP-FPM can help free up memory and resources, especially on high-traffic sites.
- Error Resolution: If PHP-FPM encounters issues or becomes unresponsive, restarting can help resolve temporary glitches.
- Log Rotation: After rotating log files for PHP-FPM, a restart may be necessary to ensure new logs are written properly.
Prerequisites
Make sure you have root access or the necessary privileges to restart services on your server. Depending on your Linux distribution, you might use different commands like systemctl or service.
Method 1: Using systemctl
On modern Linux distributions such as Ubuntu 16.04+ and CentOS 7+, systemctl is the standard method for managing services, including PHP-FPM. Here’s how you can restart PHP-FPM using systemctl:
Restart PHP-FPM
This command will restart the PHP-FPM service, applying any new configuration changes.
Stop and Start PHP-FPM
If you want more control, you can stop and start PHP-FPM manually:
sudo systemctl start php-fpm
This can be helpful if you need to ensure that the service is completely stopped before starting it again.
Check Status
To ensure that PHP-FPM has restarted successfully, use:
This will display the status of the PHP-FPM service, including whether it is active and any recent log messages.
Method 2: Using service Command
The service command is commonly used on older Linux distributions or for backward compatibility. Here’s how to restart PHP-FPM using service:
Or, to stop and start the service separately:
sudo service php-fpm start
Method 3: Restarting Specific PHP-FPM Versions
If you have multiple PHP versions installed, you need to specify the version of PHP-FPM you want to restart. For example, if you have PHP 7.4 installed, use the following command:
Or with service:
This method is particularly useful for environments where different PHP versions are needed for different applications or websites.
Method 4: Sending Signals Directly to PHP-FPM
You can directly send signals to PHP-FPM to reload configurations without fully restarting the service. This is a more subtle approach that can be less disruptive to your web traffic:
Reload Configuration
To reload the PHP-FPM configuration without terminating existing processes, use:
Replace /run/php/php-fpm.pid with the path to your actual PID file if it differs. This method is useful when you want to reload configuration changes without restarting all PHP-FPM processes.
Graceful Restart
A graceful restart allows PHP-FPM to finish serving ongoing requests before restarting:
This is especially helpful in production environments where you want to avoid interrupting active user sessions.
Method 5: Using pkill or killall
If you’re facing issues with PHP-FPM and need to forcefully stop all processes, you can use pkill or killall. This is a more aggressive method and should be used with caution:
Or:
After killing the processes, you need to start PHP-FPM manually:
Method 6: Using Nginx or Apache Restart
In some cases, restarting your web server can indirectly restart PHP-FPM if it’s tightly coupled with the web server’s process. Here’s how you can do that:
Nginx
Apache
While this method is not recommended for PHP-FPM-specific issues, it can be useful if you are performing maintenance on your entire web stack.
Best Practices for Restarting PHP-FPM
- Check Logs: Before restarting, check PHP-FPM logs for any errors or warnings. This can help identify underlying issues that may be resolved without a restart.
- Graceful Restarts in Production: Always prefer a graceful restart in a production environment to avoid disrupting users.
- Monitor Resource Usage: Use tools like top, htop, or ps to monitor PHP-FPM processes before and after a restart to ensure it’s operating as expected.
Conclusion
Restarting PHP-FPM is a common task that every server administrator or developer should be familiar with. Whether you are using systemctl, service, sending signals, or performing a graceful restart, knowing the right method for your situation can ensure smooth performance and minimal disruption to your services. By following best practices, you can keep your PHP-FPM running efficiently and handle any issues that may arise with confidence.