MAC::OS X MarvericksにアップデートしたらVirtual HostとPHPが動かなくなった

先日、待ちに待ったOS X Marvericksの無料配信が始まりました!

早速アップデートしたんですが、ApachePHPが動かなくなっていただけでなく、Virtual Hostの設定もおかしくなっていました。

MAC::ApacheのVirtual Hostを設定の手順でexample1.localhostとexample2.localhostのように複数ドメインを設定していたのですが、どれにアクセスしてもexample2.localhostが開いてしまううえにPHPのソースがそのまま表示されてしまう状態でした。

下記の手順で復旧しました。

 

(1) Virtual Host設定のconfファイルの存在を確認しました。

------

cd /etc/apache2/other

ls

less example1.localhost.conf

less example2.localhost.conf

------

きちんとexample1.localhost.confもexample2.localhost.confもありって中身もそのままでした。

*このディレクトリはVirtual Hostの設定ファイルを格納するためにある訳じゃないと思うんですが使っちゃってます。

 

(2) hostファイルの設定が変わっていないことを確認しました。

------

less /private/etc/hosts 

------

自分が設定した内容と変わっていませんでした。

 

(3) Apacheの設定ファイルが置き換わっていることを疑いました。

------

cd /etc/apache2

ls -al | grep 'httpd.conf'

------

httpd.confの更新日が2013/10/23に!これはOSを更新したタイミングです!

やはりOSの更新時に設定ファイルが置き換わってしまっていました。

元々のファイルはhttpd.conf~previousという名前でバックアップされているみたいです。

 

 

(4) Apacheの設定ファイルの設定をしなおすことにしました。

念のためコピーを作ってから編集。

 ------

sudo cp httpd.conf  httpd.conf.20131027bk

sudo vi httpd.conf

------

やはりphp5のモジュールを読み込んでいる行がコメント化されていたので生かす。

#LoadModule php5_module libexec/apache2/libphp5.so

LoadModule php5_module libexec/apache2/libphp5.so

 

あとVirtual Host設定用に用意されている設定ファイルの読み込みも生かす。

#Include /private/etc/apache2/extra/httpd-vhosts.conf

Include /private/etc/apache2/extra/httpd-vhosts.conf

*これは最初やらなかったんですが、ブラウザでexample1.localhostにアクセスしてもexample2.localhostが表示されてしまうので、有効にしてみたらうまくいきました。

------

sudo apachectl start

------

これでブラウザからexample1.localhostにもexample2.localhostにもそれぞれアクセスできるようになりました。

しかし、phpMyAdminを入れているpma.localhostでログインしようとするとエラーが発生!

phpの設定ファイルもOSの更新時に置き換わってしまっていると推測。

 

(5) php.iniの状態を確認。

------

cd /etc

ls -al | grep 'php'

------

php.iniがなくなってphp.ini.defaultがありました。php.ini-5.2-previousってファイルが元のがバックアップされたファイルかな。

defaultをコピーして設定しなおし。

------

sudo cp php.ini.default php.ini

sudo vi php.ini

------

やはりMySQL用拡張モジュールを読み込む設定がコメントアウトされていました。

;extension=php_mysql.dll

;extension=php_mysqli.dll

extension=php_mysql.dll

extension=php_mysqli.dll

また、前に設定したしていたはずの下記の設定も追記しました。

mysql.default_socket =

mysql.default_socket = /tmp/mysql.sock

あともうひとつも

mysqli.default_socket =

mysqli.default_socket = /tmp/mysql.sock

そして、再度Apache再起動。

------

sudo apachectl start

------

 

これで、恐らくMarvericksにアップデートする前と同じ状態になったはず。

はぁ、時間かかった。