MAC::OS X MarvericksにアップデートしたらVirtual HostとPHPが動かなくなった
先日、待ちに待ったOS X Marvericksの無料配信が始まりました!
早速アップデートしたんですが、ApacheでPHPが動かなくなっていただけでなく、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
------
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
------
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_mysqli.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にアップデートする前と同じ状態になったはず。
はぁ、時間かかった。