Install php-mod and php-fpm (different versions) on the same server

3 min read 27-10-2024
Install php-mod and php-fpm (different versions) on the same server

If you're managing a web server that hosts multiple applications, you might find yourself needing different versions of PHP to cater to the requirements of each application. This can involve setting up PHP modules and PHP-FPM (FastCGI Process Manager) for various PHP versions on the same server. In this article, we'll guide you through the process while ensuring it's straightforward and easy to follow.

Problem Scenario

The problem here is the need to install multiple PHP versions with their respective modules and PHP-FPM on a single server, which can be complex if not done correctly. The goal is to maintain a smooth operation without conflicts between different PHP installations.

Original Code for the Problem

While there might not be a specific code snippet provided, the installation typically involves using commands like:

sudo apt-get install php7.4 php7.4-fpm php7.4-mysql
sudo apt-get install php8.0 php8.0-fpm php8.0-mysql

Steps to Install PHP Modules and PHP-FPM

  1. Update Your Package Manager
    Before installing any new packages, it's essential to update your package manager. For Ubuntu/Debian, you can do this by running:

    sudo apt-get update
    
  2. Add the Necessary Repository
    If you're using Ubuntu, you may need to add a repository to get the specific PHP versions. The ondrej/php PPA is a popular choice:

    sudo add-apt-repository ppa:ondrej/php
    sudo apt-get update
    
  3. Install PHP Versions and FPM
    Now you can install different versions of PHP along with their respective PHP-FPM:

    sudo apt-get install php7.4 php7.4-fpm php8.0 php8.0-fpm
    
  4. Install Required PHP Modules
    Depending on the needs of your applications, you might need to install additional modules. Here’s how to install common extensions for both PHP versions:

    sudo apt-get install php7.4-mysql php8.0-mysql
    sudo apt-get install php7.4-xml php8.0-xml
    sudo apt-get install php7.4-mbstring php8.0-mbstring
    
  5. Configure PHP-FPM
    After installation, you need to configure each PHP-FPM pool. You can find the configuration files typically in /etc/php/7.4/fpm/pool.d/ and /etc/php/8.0/fpm/pool.d/. Ensure each pool has a unique port or socket configuration.

    For example, you might edit the www.conf file for PHP 7.4 to listen on a specific port:

    listen = 127.0.0.1:9074
    

    And for PHP 8.0:

    listen = 127.0.0.1:9080
    
  6. Restart PHP-FPM Services
    After making changes, restart the PHP-FPM services to apply them:

    sudo systemctl restart php7.4-fpm
    sudo systemctl restart php8.0-fpm
    
  7. Set Up Your Web Server
    Make sure your web server (like Nginx or Apache) is configured to handle multiple versions of PHP. This usually involves specifying the correct version of PHP-FPM in your server block or virtual host configuration.

Practical Example

For an Nginx configuration, you would set up something like this:

server {
    listen 80;
    server_name example.com;

    location / {
        root /var/www/example.com/public;
        index index.php index.html index.htm;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # Use the correct PHP version here
        fastcgi_pass 127.0.0.1:9080;  # For PHP 8.0
    }
}

Conclusion

Setting up multiple PHP versions along with their corresponding modules and PHP-FPM on a single server is a manageable task with the right approach. By following the steps outlined above, you'll be able to cater to different application requirements without issues.

Additional Resources

By understanding the necessity of using different PHP versions and carefully configuring your server, you can enhance your web applications' performance and compatibility. Happy coding!