Ubuntu18.04のLAMP環境で複数phpバージョン対応
問題
php5を使いたいこともあるし、php7を使いたいこともあるんですけど、複数のphpのバージョンに対応するにはどうしたらよいですか?
答え
apt install php7.4-fpm
apt install php5.6-fpm
php-fpmは、リソースに余裕があれば両方起動させておいても大丈夫。
service php7.4-fpm start
service php5.6-fpm start
「共存」させる必要があるのであれば、ディレクトリやVirtualHostで切り替えは可能。
例えば、/etc/apache2/sites-available/000-default.conf に以下のように書くと、127.0.0.1はphp5.6、127.0.0.7はphp7.4になる。
<VirtualHost *:80>
DocumentRoot /var/www
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerName 127.0.0.7
DocumentRoot /var/www
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
ただ、常に同時に使うわけではなく、開発するプログラムに応じて「切り替え」ができればよいのであれば、000-default.conf はそのままにして、必要な方を有効にする対応でもよいでしょう。
php7.4設定を有効にしてサービス再起動
a2disconf php5.6-fpm
a2enconf php7.4-fpm
service apache2 reload
php5.6設定を有効にしてサービス再起動
a2disconf php7.4-fpm
a2enconf php5.6-fpm
service apache2 reload