Ubuntu 10.04(デスクトップ)でPHPの複数のバージョンを実行し、それらを切り替える簡単な方法はありますか?
WAMP forWindowsでのPHP)の非常に簡単なインストールと切り替えに甘んじています。これは開発環境用です。
アイデアは、PHP(./ configure、。/ make、。/ make installではない)のいくつかのバージョンを手動でコンパイルし、PHP拡張子を持つことです。 VirtualHost構成内にロードするように要求します。
そうすれば、必要になるまでPHPライブラリのロードを延期でき、VirtualHostごとに異なるPHPライブラリを選択できます。
複数のプロジェクトを扱っていたときに同じ問題が発生しました。私が参照した この記事 しかし、必要に応じてバージョンを切り替える必要があるたびにそうでしたが、これにより、CLIとWebを別々に柔軟に使用できます。
php5.6からphp7.0への移行
Apacheの場合、次のようにコマンドを使用できます。
Sudo a2dismod php5.6 ; Sudo a2enmod php7.0 ; Sudo service Apache2 restart
CLIの場合、コマンドは次のように使用できます。
Sudo update-alternatives --set php /usr/bin/php7.0
php7.0からphp5.6への移行
Apacheの場合、コマンドは次のように使用できます。
Sudo a2dismod php7.0 ; Sudo a2enmod php5.6 ; Sudo service Apache2 restart
CLIの場合、コマンドは次のように使用できます。
Sudo update-alternatives --set php /usr/bin/php5.6
2つ以上のWebサーバー(2つ以上のポートをリッスンしている)のインストールと構成を回避するには、以下をお読みください。
古いアプローチの別の質問がフロントページに表示されたので、答えましょう。最近のPHP-FPMは、複数のバージョンのPHP =同時にインストールされます。a2enmod
/a2dismod
なしでバージョンを切り替えることができ、一度に1つのプロジェクトでこれを変更することもできます。
これは、PHP 5.6、PHP 7.0およびPHP 7.2が同時に実行されている)のサーバーの例です。
このサーバーはDebian9です。同様に、どのディストリビューションにも1つのPHPバージョンのパッケージしかありません。aptソースでdeb https://packages.sury.org/php/ stretch main
を使用しています。
それぞれに少なくともPHP-FPMをインストールします:apt-get install php5.6-fpm php7.0-fpm php7.2-fpm
。
各PHP-FPMには、デフォルトのプール[www]
が/etc/php/x.y/fpm/pool.d
で構成されています。ここで、x.y
はPHP =バージョン。本番環境では、サイトごとに新しいプールを使用することをお勧めします(Webサーバーを個別のユーザーで保護する方法については answer を参照)が、簡単にするために、この例ではこれらのデフォルトプールを使用します。開発中も問題ないかもしれません。
<VirtualHost>
構成で、fcgiプロキシを使用してFPMプールを使用してPHPスクリプトを実行します。例:.
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
<Proxy "fcgi://localhost/">
</Proxy>
上記のSetHandler
ディレクティブで異なるソケット(php7.0-fpm.sock
、php7.2-fpm.sock
)を使用して、PHPバージョンを変更します。変更後、Apacheの構成を再ロードします。