下面是关于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。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux系统中设置多版本PHP共存配合Nginx服务器使用 - Python技术站