具有多个php版本并在单个做事器上与apache同时运行它是非常实用且常见的。

大概您有一个php脚本,并想利用多个php版本进行测试。
在这种情形下,本文适宜您。

让我们阐明一下如何运行多个版本。

yumphp54centos7 apache 应用yum安装多版本php RESTful API

当我们从apache要求.php页面时,它将参考“ SetHandler application / x-httpd-php” 以理解应加载哪个模块来处理php脚本。
关键是在这里,php受apache掌握。

在我们的方案中,情形有所不同。
在这里,我们利用称为php-fpm的独立php进程。
php-fpm是配置为相应FCGI要求的php守护程序。

1.安装apache和仓库

如果您已安装apache,请跳过yum install httpd

# yum install httpd# yum install epel-release# yum install yum-utils

2.安装多个PHP版本

# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm# yum install php56 # yum install php72# yum install php56-php-fpm# yum install php72-php-fpm

确保两个版本均已停滞

# systemctl stop php56-php-fpm# systemctl stop php72-php-fpm

3.配置SELinux

要许可selinux运行php-fpms脚本,请运行以下命令:

# semanage port -a -t http_port_t -p tcp 9072# semanage port -a -t http_port_t -p tcp 9056

4-配置php-fpm

每个php-fpm版本都在9000端口上侦听。
由于我们要运行多个php版本,以是我们须要变动默认端口:

# 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

现在运行两个php-fpms:

# systemctl start php72-php-fpm# systemctl start php56-php-fpm

现在我们须要制作脚本包装器来调用php56-cgi和php72-cgi:

# 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

5.配置Apache

我们创建两条路径。
一个用于php-fpm56,另一个用于php-fpm72

# 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

然后在这两个路径上放置两个php脚本进行测试

# 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

6.启动做事

现在,我们启用并启动apache和php-fpm做事:

# systemctl enable httpd# systemctl enable php56-php-fpm# systemctl enable php72-php-fpm# systemctl start httpd# systemctl start php56-php-fpm# systemctl start php72-php-fpm

7.配置防火墙

我们须要打开端口80来访问apache。
因此,请运行以下命令:

# firewall-cmd --permanent --add-service=http# firewall-cmd --reload

现在访问如下地址:

HTTP ://127.0.0.1/php56 HTTP ://127.0.0.1/php72