web-dev-qa-db-ja.com

nginxを使用したUbuntuでPHP 7をインストールしてPHP 5の横で実行する方法

念のため、PHP 7を試して、PHP 5で動作する他のサイトを維持しながら、サイトをPHP 7で動作させたいと思います。そのため、ドメインの仮想ホスト構成から、実行するphpを決定できます。

私はPHPバージョン管理を見て、2つのバージョンを実行できることを見ましたが、私が見つけたものはApacheのようです。私はnginxの下でこれを行う方法に関するより明確な指示を探しています。また、重要な場合に備えてhhvmを実行しています。

10

まず、php5-fpmphp7.0-fpm共同インストール可能なphp5とphp7.0用のOndřejSurýのPPA :からインストールする必要があります。

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のインストール方法」の質問に対する回答 、および自分からのカスタムコメントと修正。


次に、nginxnginxは、構成と同じ程度にしかできません。 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での作業が完了したら、別のテストコピーが必要になる可能性があります。問題なく「スイッチオーバー」。

残念ながら、php5php7.0を同じサーバーブロック内で動作させる簡単な方法はありません。サイトやアプリケーションなどのパスを変更して、php5およびphp7.0の1つ。このようなサイトのリワークは厄介になる可能性があるため、サイトコードの2つの別個のコピーを実行することをお勧めします。1つはphp7.0移行用、もう1つは運用中のphp5用です。

12
Thomas Ward