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)
あれー。
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に異変
$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
で保存。
アクセス
http://localhost:8080/
動いた!
これもしやapache2.4が悪いんじゃなくてphp5.6のせい、もしくはphp5.6とapache2.4の設定がうまくいってなかったのかなぁ。
とりあえずphp5.4で動くようになりました。