Apacheで使用するPHPのバージョンを切り替えるには?a2enmodコマンドを使うとかんたん!

サーバー

Apache2.4で使用するPHPのバージョンを切り替える方法をメモしておきます。

ここでは現在php7.2を使用しているものとし、使用するphpのバージョンをphp7.3に変更してみます。なお、php7.3はあからじめインストールされているものとします。

スポンサーリンク

a2enmodコマンドを使うとかんたん!

Apacheで使用するPHPのバージョンは、読み込まれているphpのモジュールにより決定されます。モジュールを切り替えることにより、ほかのバージョンのphpに切り替えることが可能です。

Apache2.4がインストールされている環境では、多くの場合a2コマンドが利用できます。a2enmodおよびa2dismodコマンドを使い、php7.3モジュールを読み込むようにすれば、php7.3を使用するようになります。

スポンサーリンク

PHPのバージョンを切り替える

まず、a2dismodコマンドにより現在使用されているバージョンのPHPモジュールを無効にします。

$sudo a2dismod
Your choices are: access_compat alias auth_basic auth_digest authn_core authn_file authz_core authz_host authz_user autoindex deflate dir env filter headers http2 include mime mpm_prefork negotiation php7.2 proxy proxy_http reqtimeout rewrite setenvif slotmem_shm socache_shmcb ssl status userdir xml2enc
Which module(s) do you want to disable (wildcards ok)?
php7.2
Module php7.2 disabled.
To activate the new configuration, you need to run:
  systemctl restart apache2

a2dismodコマンドを実行すると有効なモジュールがリストアップされ、php7.2が読み込まれていることが分かります。php7.2を指定し、無効にします。

つづけて、a2enmodコマンドにより変更したいバージョンのphpモジュール(ここではphp7.3)を有効にします。

$sudo a2enmod
Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_fcgi authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex brotli buffer cache cache_disk cache_socache cern_meta cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor http2 ident imagemap include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro md mime mime_magic mpm_event mpm_prefork mpm_worker negotiation php7.2 php7.3 proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_hcheck proxy_html proxy_http proxy_http2 proxy_scgi proxy_uwsgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc
Which module(s) do you want to enable (wildcards ok)?
php7.3
Considering dependency mpm_prefork for php7.3:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php7.3:
Enabling module php7.3.
To activate the new configuration, you need to run:
  systemctl restart apache2

最後にApacheをリスタートし、設定を適用します。

$sudo systemctl restart apache2

試しにphpを使用したサイトにアクセスしてみます。きちんと動作することを確認しましょう。

なお、PHPで使用されるモジュールはPHPのバージョンごとにインストールされています。PHPの設定ファイル(php.ini)もバージョンごとに異なるため、使用するPHPを変更することでモジュールや設定に起因するエラーが発生することがあります。

PHPが正常に動作していないと、PHPで書かれたサイトのソースコードなどがそのまま表示されてしまうこともあるので、バージョン変更後は入念に動作チェックするようにしましょう。

まとめ

Apacheで動作させるPHPのバージョンを変更する方法を紹介しました。

a2コマンドを活用すると、モジュールファイルを手動で配置するよりもかんたんかつ確実に操作できますので、ぜひ使ってみてください。

コメント

タイトルとURLをコピーしました