Recette pour travailler avec PHP 5.6 et PHP 7 avec Nginx et en commande

Fonctions lancées en console

Recette pour pouvoir switcher entre des applications utilisant des versions différentes de PHP (PHP 5.6 et PHP 7).

(J’utilise Ubuntu).

Ingrédients

  • Nginx
  • PHP 7 et PHP 5
  • PHP5-fpm et PHP7.0-fpm (communication entre PHP et Nginx)

Liens :

Recette

Configuration Nginx

L’idée est d’avoir plusieurs applications/sites qui tournent chacun sur une version différente de PHP.

  • Faire différents virtual hosts qui pointent vers une version différente de fpm (php7.0-fpm ou php5-fpm)

Exemple de VHost pour PHP7 avec php7.0-fpm

server {
        listen 80;

        root /usr/share/nginx/html/test;
        server_name test7
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
        # With php7-0-fpm:
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
       }
}

Exemple de VHost pour PHP5 avec php5-fpm

server {
        listen 80;

        root /usr/share/nginx/html/test5;
        server_name test5
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
       }
}

Configuration pour travailler en commande

Le problème se pose aussi quand on on utilise PHP en ligne de commande pour exécuter des tâches.

Afin de switcher, je propose de simplement surcharger l’alias dans le fichier .bashrc (~/.bashrc) en appelant le PHP souhaité :

alias php='/usr/bin/php'

Comme on veut pouvoir switcher entre PHP5 et PHP7, il s’agit plutôt de définir des fonctions dans le fichier .bashrc :

function enablePhp5() {
alias php='/usr/bin/php5'
}
function enablePhp7() {
alias php='/usr/bin/php'
}

C’est chaud ! C’est prêt !

Ensuite quand on exécute telle ou telle fonction dans notre commande, on obtient le résultat souhaité :

Fonctions lancées en console