回答:
まず、OndřejSurýのPPAをインストールしphp5-fpm
、php7.0-fpm
そこから、共存可能な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
ます。実際、これはサーバーブロック全体に適用されます。これを行う最も簡単な方法は、2番目のサーバーブロック(たとえば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
次に、2番目のテストドメインを使用してテストを実行しphp7.0
ます。ただし、これを行う場合は、サイトのコピーを作成する必要があります。別のテスト用コピーが必要になる可能性があります。これによりphp7.0
、での作業が完了した後、問題。
残念ながら、同じサーバーブロック内で作成php5
してphp7.0
作業する簡単な方法はありません。サイトやアプリケーションなどのパスを1つと1つに変更することなくしてphp5
はphp7.0
、このようなサイトの手直しは厄介になる可能性があるため、サイトコードの2つの別々のコピーを実行することをお勧めします。1つはphp7.0
移行用、もう1つphp5
は本番用です。
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
*php5.6*
は、Ondřejが提供するパッケージの使用に固執し、プレーンphp5
パッケージを削除する必要があります。