Quelqu'un peut-il m'indiquer ici comment installer et configurer Multi PhP avec une instance Apache sur CentOS 7, et la bonne façon de le tester ..
les commandes suivantes supposent que vous avez déjà Sudo su -
ou vous devrez ajouter Sudo à chacune des commandes:
yum install httpd -y
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils -y
yum install php56 -y
yum install php72 -y
yum install php56-php-fpm -y
yum install php72-php-fpm -y
systemctl stop php56-php-fpm
systemctl stop php72-php-fpm
sed -i 's/:9000/:9056/' /etc/opt/remi/php56/php-fpm.d/www.conf
sed -i 's/:9000/:9072/' /etc/opt/remi/php72/php-fpm.d/www.conf
systemctl start php72-php-fpm
systemctl start php56-php-fpm
cat > /var/www/cgi-bin/php56.fcgi << EOF
#!/bin/bash
exec /bin/php56-cgi
EOF
cat > /var/www/cgi-bin/php72.fcgi << EOF
#!/bin/bash
exec /bin/php72-cgi
EOF
Sudo chmod 755 /var/www/cgi-bin/php56.fcgi
Sudo chmod 755 /var/www/cgi-bin/php72.fcgi
cat > /etc/httpd/conf.d/php.conf << EOF
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
AddHandler php56-fcgi .php
Action php56-fcgi /cgi-bin/php56.fcgi
Action php72-fcgi /cgi-bin/php72.fcgi
<Directory /var/www/html/php56>
DirectoryIndex index.php
AllowOverride all
Require all granted
</Directory>
<Directory /var/www/html/php72>
DirectoryIndex index.php
AllowOverride all
Require all granted
</Directory>
EOF
mkdir -p /var/www/html/php56
mkdir -p /var/www/html/php72
echo "<?php phpinfo(); ?>" > /var/www/html/php56/index.php
echo "<?php phpinfo(); ?>" > /var/www/html/php72/index.php
echo "AddHandler php72-fcgi .php" > /var/www/html/php72/.htaccess
( http://127.0.0.1/php56 )
( http://127.0.0.1/php72 )
Sudo systemctl enable httpd
Sudo systemctl enable php56-php-fpm
Sudo systemctl enable php72-php-fpm
Comme expliqué par @runwuf, cela est possible en utilisant les collections de logiciels disponibles dans le référentiel centos-scl ou dans le référentiel remi .
Mais utiliser SetHandler pour le proxy fastcgi semble une manière meilleure et plus moderne, grâce à httpd 2.4:
SetHandler "proxy:fcgi://127.0.0.1:9000"
Ceci est expliqué dans certains articles de blog:
Il semble que ce que vous essayez de faire ressemble à ceci:
exécutant-deux-versions-php-sur-le-même-serveur
Personnellement, je ne voudrais pas essayer deux versions php sur la même instance Apache ... J'installerais une version différente de php par tarball et les exécuterais sur une instance distincte d'Apache qui est également installée par tarball et pointer chaque httpd.conf vers les différents version de php.
répondre à runwuf
Bonjour, il y a un problème avec votre approche concernant SELinux
soit vous désactivez SELinux (si vous n'êtes pas concerné par la sécurité), soit vous gérez la stratégie de port SELinux
Si vous ne gérez pas le SELinux, le php56-php-fpm ne démarrera pas si SELinux est réglé sur le mode "Enforcing"
Exécutez les commandes suivantes pour que SELinux autorise les ports
semanage port -a -t http_port_t -p tcp 9072
semanage port -a -t http_port_t -p tcp 9056
puis enfin essayer de démarrer les modules fpm
J'ai dû ajouter ce qui suit à mon php.conf à l'intérieur de l'instruction d'annuaire pour faire passer l'API Apache Server à FPM/FastCGI au lieu de CGI/FastCGI - votre solution était cependant presque parfaite! Maintenant, si je pouvais juste comprendre comment utiliser un socket au lieu de TCP, je serais un codeur heureux.
# mod_proxy_fcgi options
<IfModule mod_proxy_fcgi.c>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9072"
</FilesMatch>
</IfModule>