SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

Ubuntu18.04のLAMP環境で複数phpバージョン対応

問題

php5を使いたいこともあるし、php7を使いたいこともあるんですけど、複数のphpのバージョンに対応するにはどうしたらよいですか?

答え

まず、php-fpmを複数バージョンインストールする

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

関連するメモ

コメント