2008-01-03
■[Mac][Apache][PHP][Leopard] openssl が有効にならない その2(とりあえず解決)
そもそもの発端が 自分でビルドした PHP5.2.5 で '--with-openssl=/usr' を
指定したのに、phpinfo() でopenssl が enabled になっていなかった。
元々 Leopard にインストールされている Apache2.2.6 + PHP5.2.4 は
openssl が使用できる。phpinfo() でも openssl0.97l が有効になっている。
で、Apache の mod_ssl の指定が悪かったのかと思い、MacPorts でインストールしたopenssl0.98g を指定して、Apache を再ビルドしたら、make でエラーになった。
./configure \ '--enable-so' \ '--enable-modules=all' \ '--enable-mods-shared=all' \ '--enable-ssl=shared' \ '--enable-ssl' \ '--with-ssl=/opt/local' \
じゃあデフォルトのApache に自分でビルドした PHP5.2.5 を組み込んでみたらどうかと思い、
PHP5.2.5 の prefix を '--with-apxs2' としてデフォルトの Apache を指定した。
PHP5.2.5 の openssl のパスは '--with-openssl' と指定。
※ PHP5.2.5 をデフォルトの apache に組み込むと、元々ある PHP5.2.4 の libphp5.so を上書きしするので、
/usr/libexex/apache2/libphp5.so を libphp5.2.4.so とかにリネームする必要がある。
これで ./configure、make 、make install は問題なく終了。
apachectl -t を実行すると、以下のようなエラーとなる。
Syntax error on line 114 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/libphp5.so into server: dlopen(/usr/libexec/apache2/libphp5.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/libphp5.so: mach-o, but wrong architecture
青いまま腐る さんに解説が書かれているが、64bit と 32 bit が混在しているのが原因っぽい。
MAC/drupalとかのメモ帳:WINDOWSユーザのためのMAC講座3:LEOPARDに --with-gd オプションでphpをインストールする。 - livedoor Blog(ブログ)
書かれている事を試してみたが、同様に実行できなかった。
ここまで試した事をまとめてみる。
- 自前のApache2.2.6 + PHP5.2.5 で デフォルトのopenssl を組み込んでみる → openssl が有効にならない
- 自前のApache2.2.6 + PHP5.2.5 で MacPortsのopenssl を組み込んでみる → Apache のビルドがこける
- デフォルトのApache2.2.6 + 自前のPHP5.2.5 を組み込んでみる → Apache が起動しない
じゃあ MacPorts の Apache2.2.6 ならどうだと、MacPorts から Apache2.2.6 をインストールしてみた。
で、自前の PHP5.2.5('--with-openssl-dir=/opt/local') を組み込んでビルド。
apachectl でApache を起動したら、エラーになった。
httpd: Syntax error on line 96 of /opt/local/apache2/conf/httpd.conf: Cannot load /opt/local/apache2/modules/mod_ssl.so into server: Symbol not found: _ssl_cmd_SSLCACertificateFile\n Referenced from: /opt/local/apache2/modules/mod_ssl.so\n Expected in: flat namespace\n
ヱビスブログさんによると、デフォルトのと MacPorts のがコンフリクトを起こしている可能性があるとのこと。
ヱビスブログ » (Leopardの)MacPortsでApache2が起動しないmod_ssl問題
httpd.conf で LoadModule ssl_module modules/mod_ssl.so をコメントにすれば Apache は起動するとのことだが、
PHP で openssl を使用したいので、その方法は論外。
色々調べたら、MacPorts の trac のチケットのコメントに 「古い mod_ssl で置き換えたら動いたよ」ってあった。
※ 当然ながら自己責任です。
んで、デフォルトの /usr/libexec/apache/mod_ssl を /opt/local/apache2/modules/ にコピーして、
Apache を起動すると、起動できた。
/opt/local/apache/bin/httpd -M で確認してみると、ちゃんと ssl_module (shared) と表示される。
phpinfo() を確認してみると、やっぱり openssl が 有効になっていない。
PHP5.2.5 のビルドで、'--with-openssl-dir=/opt/local' にしてたので、
それを '--with-openssl' として PHP5.2.5 をビルドした。
phpinfo() をみると OpenSSL support enabled となった!
Zend_Http_Client で ssl なページにアクセスしたら、エラーにならずに取得できた!
ただ、phpinfo() の openssl のバージョンが OpenSSL 0.9.8g 19 Oct 2007 ってなってるのが気になるけど・・。
まぁ、そのうち MacPorts の mod_ssl が直ってくれると思うので、それまではこれで行こう。
すごくバッドノウハウ的(根本的な解決方法ではない)だと思うけど、とりあえず目的は達成できた。
- 3 http://www.google.com/search?client=safari&rls=ja-jp&q=Tritonn+leopard&ie=UTF-8&oe=UTF-8
- 3 http://www.google.com/search?num=20&hl=ja&client=safari&rls=ja-jp&as_qdr=all&q=vim+leopard&btnG=検索&lr=lang_ja
- 2 http://d.hatena.ne.jp/keyword/Leopard
- 2 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=Cocco+ライブ+2007&start-index=24&adpage=4&mode=02
- 1 http://awasete.com/show.phtml?u=http://d.hatena.ne.jp/heavenshell/
- 1 http://blog.search.goo.ne.jp/search_goo/result/?ts=all&tg=all&st=time&dc=10&da=all&MT=mac+windows&from=blog&fs=all&pg=6
- 1 http://d.hatena.ne.jp/heavenshell
- 1 http://d.hatena.ne.jp/keyword/エラー
- 1 http://d.hatena.ne.jp/keyworddiary/trac
- 1 http://reader.livedoor.com/reader/
