thumbnail

PHP7からPHP8へのバージョンアップが上手くいかない場合の対処法

PHP7からPHP8へバージョンアップする際に手間取ったので備忘録を残します。ただし、この記事は「php -vで既にPHP8へのバージョンアップが確認できたにもかかわらず、PHP8が使えない」場合の対処法で、Apacheの設定方法についての記事になります。

【追記: PHP8.1がリリースされています。PHP8.1を使いたい場合は記事内の8.0.xの記述を8.1に置き換えてください。】

環境

環境は以下の通りです。

OSMac
Webサーバ元から入っているApache

PHP8にバージョンアップできたけど反映されない

PHP7→PHP8のバージョンアップの方法は既に記事がたくさん出てるので、参考になるページのURLを記載します。

Upgrade to PHP 8 with Homebrew on Mac

https://a-zache.medium.com/upgrade-to-php-8-with-homebrew-on-mac-aeff424cc668

Mac に Php8 インストールする手順

https://sumito.jp/2021/11/11/2581/

途中でエラーが出ても、コマンドプロンプトの言う通りにコマンド入力を済ませれば難しいことはないと思います。私の場合、git cloneがうまく行かない等のエラーが出ました。

ここまでは順調でバージョンアップはうまくいったのですが、この後につまりました。

php -vでPHP8へのバージョンアップが確認できたのですが、phpinfo();で表示されるバージョンはPHP7のままでした。そこでApacheの設定ファイルhttpd.confを調べることに。

ちなみに/etc/apache2/httpd.confにあります。

httpd.confの設定

php7のモジュールを読み込んでいた

LoadModule php7_module libexec/apache2/libphp7.so

と明らかにphp7のモジュールを読み込んでいたので#でコメントアウト。新しくPHP8のモジュールを読み込みます。

# LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php_module /usr/local/Cellar/php/8.0.12/lib/httpd/modules/libphp.so 

コードがそのまま表示される

今度はPHPのソースコードがそのままブラウザ表示されるようになってしまいました。

この問題は以下の文を追加することで解決しました。

<IfModule php_module>
    DirectoryIndex index.html default.php index.php
    AddHandler application/x-httpd-php .php
</IfModule>

PHP7とPHP8の違いについて

別記事で新機能についてまとめてあります。

まとめ

以上、PHP7からPHP8へのバージョンアップが上手くいかない場合の対処法を説明しました。今回は主にApache側の設定の問題だったことがわかりました。同じような状況に陥った場合は是非参考にしてください。