MacのOSをHigh Sierraにアップデートしたらphpが動作しなくなったので対処メモ
2018年01月21日
MacのOSアップデートが来ていたので、Hight Sierraにアップデートしたら、ローカルの開発環境のApacheのphpプログラムが動作しなくなってしまった。
具体的にいうとソースコードが表示されてプログラムが動作していない。
原因を調べてみると、とりあえずMacのOSを最新版にアップデートすると、Apacheの設定ファイルであるhttp.confが最新版に置き換わってしまうので、設定内容を確認する必要がある。
ちなみに、Macのhttpd.confは /etc/apache2/httpd.conf にあるが、OSアップデート時にアップデート前の設定ファイルが httpd.conf.pre-update にバックアップされている。
diff /etc/apache2/httpd.conf /etc/apache2/httpd.conf.pre-update
上記のコマンドで差分を確認できる。
差分を確認していると、結論から言うと MacのOSをHigh Sierraにアップデートすると、phpの推奨環境は php7 になっていて、php5は推奨されないようだ。
High Sierraでは、デフォルトの設定が
LoadModule php5_module libexec/apache2/libphp5.so
だったのが、
LoadModule php5_module libexec/apache2/libphp7.so
になっている。
無理にphp5を動かすことも可能だろうが、おとなしく推奨環境のphp-7に対応してみることにした。
対応としては、一旦phpをアンインストールしてから、最新版のphp7をインストールする。
homebrewを使っているので、まずは brew-update で homebrewを最新版にアップデートしてから、php5.6をアンインストールしてphp7をインストールすることにした。
ざっくりというと下記のようなかんじ。
brew update //homebrewを最新版にアップデート
brew unlink php56 //php5.6をアンインストール
brew install php71 //php7.1をインストール
php -v //バージョン確認
これでphpのバージョンが7にできていることを確認できた。
これで httpd.confの諸々の設定を変更してみたのだが、相変わらず動作しない。
Apacheのエラーログをあさってみたところ
#LoadModule unixd_module libexec/apache2/mod_unixd.so
↓
LoadModule unixd_module libexec/apache2/mod_unixd.so
この読み込みができていなくてエラーが出ているようだったので、コメントを外すことで動作するようになった。
しかし、これでようやくApacheのサーバは動作するようになったのだが、phpのプログラムがエラーで動作しなくなった。
調べてみると、php7系では、mysql系の関数がオブジェクト指向の使い方が推奨されていてmysql系の関数が使用できなくなっているようなので、諸々修正する必要があるようだ。
とりあえず、データベース接続関係以外のプログラムは問題なく動作していたので、該当箇所だけ修正しないといけないのだが、けっこう多くの修正が必要となってしまうが、この対応はまた時間があるときにする予定。