我想尝试php 7并让我的网站在php 7上工作,同时保持其他网站在php 5上运行以防万一.所以从域虚拟主机配置我可以决定运行哪个PHP.
我看了php版本管理,看到它可以运行两个版本,虽然我找到的似乎是apache.我正在寻找关于如何在nginx下执行此操作的更清晰的说明.我也有hhvm运行以防万一.
解决方法:
首先,你需要从Ondřej Surý’s PPA for co-installable php5 and php7.0.安装php5-fpm和php7.0-fpm:
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
资料来源:An answer on the “How to install php 7?” question,以及我自己的定制评论和修改.
其次,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.