ITblog

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系の関数が使用できなくなっているようなので、諸々修正する必要があるようだ。

とりあえず、データベース接続関係以外のプログラムは問題なく動作していたので、該当箇所だけ修正しないといけないのだが、けっこう多くの修正が必要となってしまうが、この対応はまた時間があるときにする予定。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です