LoginSignup
4
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-11-13

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
と打つと


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

とエラーが出て、調べてみたらバージョンが変わっていることがわかりました。
/usr/sbin/apachectl -v
Server version: Apache/2.4.9 (Unix)

とりあえずエラーメッセージでググると、
http://d.hatena.ne.jp/rougeref/20120907
unixd_configの名前がap_unixd_configになったらしいです。
この方は自分でソースを書き換えてコンパイルしなおしてらっしゃいますが、
私は出来ればパッケージ管理したかったので
試しにbrewでインストールしなおしてみました。


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)

あれー。

こちらのサイトさんを見ると、
zlibのパスが
homebrew/dupes/zlib
にあるとのことで、

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

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

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

apache2.2を入れようとしたらMacPortに異変


$brew install httpd22

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

何やらエラーが。
MacPortsかfintが入ってるからアンスコしてからもっかいやってくれってことらしいです。
MacPortsでしかないパッケージがあった気がするんだけどなぁ。
と思いつつアンスコしてみる。


$ 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

なんだdarwinって。appleのOSらしい。
http://hrt0kmt.hatenablog.com/entry/2014/10/18/194636
ここを参考にx-codeのdevtoolsをインストールしなおすらしい。
https://www.macports.org/install.php
ここからYosemiteのMacportsをDLしてインストール。


$brew install httpd22

これでインスコできるようになってないかな


?  /usr/local/Cellar/httpd22/2.2.29: 153 files, 3.1M, built in 67 seconds

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

apache2.2起動

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


/usr/local/Cellar/httpd22/2.2.29/

ここにあった。起動してみる。


$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

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

phpを5.4にダウングレード

https://github.com/Homebrew/homebrew-php/issues/1229
同じ現象で


brew reinstall php54 --homebrew-apxs

とphp54入れろとあったので入れてみる

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

入れた。
httpd.confも修正


LoadModule php5_module        /usr/local/Cellar/php54/5.4.33/libexec/apache2/libphp5.so

と思ったら今度は勝手にhttpd.confが書き換わった。

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


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

落ちない。killしてみる


ps auwxx | grep httpd
_www             8208   0.0  0.0  2463220     40   ??  S    月11AM   0:00.00 

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

ps auwxx | grep httpd
_www             8208   0.0  0.0  2463220     40   ??  S    月11AM   0:00.00 
落ちないね。 しょうがないんでkill -9で強制終了。 改めてapache22で起動

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

エラーなし。やったぜ。
ドキュメントルートにphpinfo置いてみる。


vi /usr/local/var/www/htdocs/index.php
<?php phpinfo();

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

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

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3