macでapacheを2.2から2.4にアップデートする(挫折したので2.2に戻した)

macのOSをMavericksからYosemiteにアップデートしたら
apacheが2.4にアップデートされていました。

そんで色々いじったのですが、結論から言うと
多分php5.6からphp5.4に戻したらうまくいったような気がします。
雑多なメモなのでそのまま真似しないようお願い致します。

# apache2.4を起動しようとするとphpでエラー
いつも通り
apachectl start
と打ってもapacheが起動せず、
パス指定で
/usr/sbin/apachectl -f /etc/apache2/httpd.conf -k start
と打つと
<pre>
httpd: Syntax error on line 527 of /etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config\n  Referenced from: /usr/local/php5/libphp5.so\n  Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so
</pre>
とエラーが出て、調べてみたらバージョンが変わっていることがわかりました。
/usr/sbin/apachectl -v
Server version: Apache/2.4.9 (Unix)

とりあえずエラーメッセージでググると、
http://d.hatena.ne.jp/rougeref/20120907
unixd_configの名前がap_unixd_configになったらしいです。
この方は自分でソースを書き換えてコンパイルしなおしてらっしゃいますが、
私は出来ればパッケージ管理したかったので
試しにbrewでインストールしなおしてみました。
<pre>
brew install php55
==> Installing php55 from josegonzalez/homebrew-php
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-dupes'...
remote: Counting objects: 1414, done.
remote: Total 1414 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1414/1414), 282.56 KiB | 187.00 KiB/s, done.
Resolving deltas: 100% (771/771), done.
Checking connectivity... done.
Tapped 36 formulae
Error: No available formula for zlib (dependency of php55)
</pre>
あれー。
http://blog.hoshina.org/post/29011953975/pow-php
こちらのサイトさんを見ると、
zlibのパスが
homebrew/dupes/zlib
にあるとのことで、

brew tap homebrew/dupes
brew install php55
としました。

インストールは成功したけれど、
apacheを起動しなおすとやっぱりSymbol not found: _unixd_configと出ていて
ソースをいじって入れ直さなきゃならないようです。

ソースから入れるのは怖いので
apache2.2を共存させてそちらを使うようにします。

#apache2.2を入れようとしたらMacPortに異変
<pre>
$brew install httpd22
</pre>

<pre>
make: *** [all-recursive] Error 1
Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.

READ THIS: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Troubleshooting.md#troubleshooting
If reporting this issue please do so at (not Homebrew/homebrew):
  https://github.com/homebrew/homebrew-apache/issues
</pre>
何やらエラーが。
MacPortsかfintが入ってるからアンスコしてからもっかいやってくれってことらしいです。
MacPortsでしかないパッケージがあった気がするんだけどなぁ。
と思いつつアンスコしてみる。

<pre>
$ port
Error: Current platform "darwin 14" does not match expected platform "darwin 13"
Error: If you upgraded your OS, please follow the migration instructions: https://trac.macports.org/wiki/Migration
OS platform mismatch
    while executing
"mportinit ui_options global_options global_variations"
Error: /opt/local/bin/port: Failed to initialize MacPorts, OS platform mismatch
</pre>
なんだdarwinって。appleのOSらしい。
http://hrt0kmt.hatenablog.com/entry/2014/10/18/194636
ここを参考にx-codeのdevtoolsをインストールしなおすらしい。
https://www.macports.org/install.php
ここからYosemiteのMacportsをDLしてインストール。

<pre>
$brew install httpd22
</pre>
これでインスコできるようになってないかな
<pre>
?  /usr/local/Cellar/httpd22/2.2.29: 153 files, 3.1M, built in 67 seconds
</pre>

よし、インスコ出来たようです。

#apache2.2起動
インストールしたapacheはここにあるとして、apache22のhttpd.confはどこだろう。

<pre>
/usr/local/Cellar/httpd22/2.2.29/
</pre>
ここにあった。起動してみる。

<pre>
$sudo /usr/local/bin/apachectl  -f /usr/local/etc/apache2/2.2/httpd.conf  -k start

httpd: Syntax error on line 117 of /usr/local/etc/apache2/2.2/httpd.conf: Cannot load /usr/local/opt/php56/libexec/apache2/libphp5.so into server: dlopen(/usr/local/opt/php56/libexec/apache2/libphp5.so, 10): Symbol not found: _ap_unixd_config\n  Referenced from: /usr/local/opt/php56/libexec/apache2/libphp5.so\n  Expected in: /usr/local/Cellar/httpd22/2.2.29/bin/httpd\n in /usr/local/opt/php56/libexec/apache2/libphp5.so
</pre>

やっぱあかんかー
apache22でもだめってこと？えーわからん

#phpを5.4にダウングレード
https://github.com/Homebrew/homebrew-php/issues/1229
同じ現象で
<pre>
brew reinstall php54 --homebrew-apxs
</pre>
とphp54入れろとあったので入れてみる

<pre>
/usr/local/Cellar/php54/5.4.33/bin/php -v
PHP 5.4.33 (cli) (built: Nov 13 2014 12:43:45) 
</pre>

入れた。
httpd.confも修正
<pre>
LoadModule php5_module        /usr/local/Cellar/php54/5.4.33/libexec/apache2/libphp5.so
</pre>
と思ったら今度は勝手にhttpd.confが書き換わった。

apache2.4のプロセスが立ち上がりっぱなしなので落とす

<pre>
sudo /usr/sbin/httpd -k stop
httpd: Syntax error on line 527 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config\n  Referenced from: /usr/local/php5/libphp5.so\n  Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so
</pre>

落ちない。killしてみる
<pre>
ps auwxx | grep httpd
_www             8208   0.0  0.0  2463220     40   ??  S    月11AM   0:00.00 
</pre>

<pre>
/usr/sbin/httpd -f /etc/apache2/httpd.conf -k start
</pre>

<pre>
ps auwxx | grep httpd
_www             8208   0.0  0.0  2463220     40   ??  S    月11AM   0:00.00 </pre>
落ちないね。
しょうがないんでkill -9で強制終了。

改めてapache22で起動
<pre>
sudo /usr/local/bin/apachectl  -f /usr/local/etc/apache2/2.2/httpd.conf  -k start
</pre>
エラーなし。やったぜ。
ドキュメントルートにphpinfo置いてみる。
<pre>
vi /usr/local/var/www/htdocs/index.php
<?php phpinfo();
</pre>

で保存。
アクセス
http://localhost:8080/

動いた！
これもしやapache2.4が悪いんじゃなくてphp5.6のせい、もしくはphp5.6とapache2.4の設定がうまくいってなかったのかなぁ。
とりあえずphp5.4で動くようになりました。