Answers:
首先,您需要安装php5-fpm
并php7.0-fpm
从的OndrejSurý的PPA的共同安装PHP5和php7.0。:
sudo apt-get install python-software-properties
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
然后,通过nginx
,我们建议使用FPM软件包。因此,相应地安装软件包:
sudo apt-get update
# We need to ***remove*** php5 packages, so we can use php5.6 packages
# from the PPA instead
sudo apt-get remove php5-common
sudo apt-get autoremove
# Now we install php5.6 packages.
sudo apt-get install php5.6-fpm
# Now, install php7.0-fpm. You may need to install separate PHP plugins
# for databases, extensions, etc. later.
sudo apt-get install php7.0-fpm
资料来源:关于“如何安装php 7?”的答案。问题,以及来自我自己的自定义评论和修改。
其次,nginx
。 nginx
只能与您的配置一样好。您很可能在nginx服务器块上有一个与此类似的PHP处理块(来自“默认”示例配置):
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
此配置只会传递给php5-fpm
。实际上,这将适用于整个服务器块。实现此目的的最简单方法是拥有第二个服务器块(例如test.domain.tld
),并提供PHP 7.0 fastcgi_pass
目标。在Xenial上的php7.0中,这将最终变成这样(从最近上传到Xenial nginx软件包的修复程序中提取),但是我不知道Ondrej软件包的布局,因此我无法在此处给出确切的详细信息(检查/etc/php7.0/fpm/pool.d/www.conf
或类似于确定在哪里收听):
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.0-fpm:
fastcgi_pass unix:/var/run/php7.0-fpm.sock;
}
您将必须对php5
块执行类似的操作,以验证使用的是php5.6
套接字而不是内置的php5
套接字(我们刚刚删除了)。
然后,使用第二个测试域来运行php7.0
测试。不过,如果要执行此操作,请确保复制您的网站-可能有必要单独准备一份测试副本,以便一旦完成使用后就php7.0
可以“切换”,而无需问题。
还有就是,不幸的是,没有简单的方法,使php5
和php7.0
在同一台服务器块内的工作,而不是不改变为您的网站,应用程序等有一个为你的路php5
,一个用于php7.0
; 这样的站点重做可能会令人讨厌,因此建议运行两个单独的站点代码副本,一个用于php7.0
迁移,一个用于php5
生产。
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
*php5.6*
Ondřej提供的软件包,并删除普通php5
软件包。