关键词

Linux系统中设置多版本PHP共存配合Nginx服务器使用

下面是关于Linux系统中设置多版本PHP共存配合Nginx服务器使用的完整攻略。

准备工作

在进行如下操作之前,需要先在Linux系统上安装好Nginx服务器,以及所需的各版本PHP。

步骤一:安装fastcgi

为了让Nginx能够运行PHP脚本,需要安装fastcgi。在终端执行以下命令:

sudo apt-get install fastcgi

步骤二:设置PHP版本

在安装好多个PHP版本后,需要在系统的PATH中设置好PHP版本的路径。 可以在/etc/profile文件中添加以下内容:

export PATH="/usr/local/php5/bin:$PATH"
export PATH="/usr/local/php7/bin:$PATH"

步骤三:配置Nginx

在Nginx的配置文件中(/etc/nginx/nginx.conf)添加以下内容:

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
    include        fastcgi_params;
}

以上配置中,将所有以.php结尾的文件都交给fastcgi处理。同时,需要注意Nginx和PHP的通信端口,如上述代码就将fastcgi_pass设为了127.0.0.1:9000。

步骤四:测试

配置完成后,需要测试是否生效。可以在终端下执行以下命令来启动PHP FastCGI进程管理器:

sudo php-cgi -b 127.0.0.1:9000

然后,在浏览器中输入http://localhost/index.php访问一个php脚本,在页面中显示php当前版本号,即可确认是否成功。

示例

以下是两个不同版本PHP共享Nginx的示例。

示例一:PHP5与PHP7共存

假设系统上已经安装了PHP5和PHP7,可以在/etc/profile文件中添加以下内容:

export PATH="/usr/local/php5/bin:$PATH"
export PATH="/usr/local/php7/bin:$PATH"

然后重启终端,打开新的终端执行以下命令:

sudo service nginx restart
sudo service php5-fpm restart
sudo service php7-fpm restart

以上命令操作完成后,PHP5和PHP7就被配置成了共存,就可以在同一台服务器上同时运行PHP5和PHP7了。

示例二:PHP7.2、PHP7.3、PHP7.4共存

以Ubuntu 20.04操作系统为例,首先需要安装不同版本的PHP,命令如下所示:

sudo apt-get install php7.2
sudo apt-get install php7.3
sudo apt-get install php7.4

然后,需要进行Nginx配置。在/etc/nginx/sites-available/default文件中添加以下内容:

location / {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    set $real_script_name $fastcgi_script_name;
    if ($real_script_name ~ "^(.+\.php)(/.*)$") {
        set $real_script_name $1;
    }
    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
    fastcgi_param SCRIPT_NAME $real_script_name;
}

以上配置中,将fastcgi_pass设为了/var/run/php/php7.4-fpm.sock表示在Nginx与PHP7.4之间用Unix socket通信,将fastcgi_param的SCRIPT_FILENAME设置为$document_root$real_script_name则可以让PHP解析到正确的脚本文件。

最后,启动PHP FPM服务:

sudo service php7.2-fpm start
sudo service php7.3-fpm start
sudo service php7.4-fpm start

重启Nginx服务:

sudo service nginx reload

以上示例中,已经搭建好了PHP7.2、PHP7.3、PHP7.4共存的环境,可以在同一台服务器上同时运行PHP7.2、PHP7.3、PHP7.4。

本文链接:http://task.lmcjl.com/news/14363.html

展开阅读全文