我想尝试 php 7 并让我的网站在 php 7 上工作,同时让其他网站在 php 5 上工作以防万一。这样我就可以从域虚拟主机配置中决定要运行哪个 php。
我查看了 php 版本管理,发现可以运行两个版本,尽管我发现的版本似乎适用于 apache。我正在寻找有关如何在 nginx 下执行此操作的更明确说明。我也运行 hhvm 以防万一。
Tho*_*ard 11
首先,你需要安装php5-fpm和php7.0-fpm从OND?EJSurý的PPA的共同安装PHP5和php7.0。:
sudo apt-get install python-software-properties
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
Run Code Online (Sandbox Code Playgroud)
然后,我们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
Run Code Online (Sandbox Code Playgroud)
来源:关于“如何安装 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;
}
Run Code Online (Sandbox Code Playgroud)
此配置只会传递给php5-fpm. 实际上,这将适用于您的整个服务器块。解决此问题的最简单方法是使用第二个服务器块(例如,用于test.domain.tld),并提供 PHP 7.0fastcgi_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;
}
Run Code Online (Sandbox Code Playgroud)
您必须为您的php5块做类似的事情,以验证使用的是php5.6套接字而不是内置php5套接字(我们刚刚删除了它)。
然后,使用第二个测试域运行php7.0测试。但是,如果您想这样做,请确保制作您网站的副本 - 可能需要有一个单独的测试副本,以便一旦您完成使用它php7.0,您就可以“切换”而无需问题。
不幸的是,没有简单的方法可以在同一个服务器块中创建php5和php7.0工作,除非改变您的站点、应用程序等的路径,使其具有一个 forphp5和一个 for php7.0;网站的这种返工可能会令人讨厌,因此建议运行两个单独的网站代码副本,一个用于php7.0迁移,另一个用于php5生产。
| 归档时间: |
|
| 查看次数: |
15766 次 |
| 最近记录: |