Hatena::ブログ(Diary)

Heavens hell

2008-01-03

[][][][] 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(ブログ)

書かれている事を試してみたが、同様に実行できなかった。


ここまで試した事をまとめてみる。

  1. 自前のApache2.2.6 + PHP5.2.5 で デフォルトのopenssl を組み込んでみる → openssl が有効にならない
  2. 自前のApache2.2.6 + PHP5.2.5 で MacPortsのopenssl を組み込んでみる → Apacheビルドがこける
  3. デフォルトの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 を使用したいので、その方法は論外。


色々調べたら、MacPortstrac のチケットのコメントに 「古い mod_ssl で置き換えたら動いたよ」ってあった。

#13182 (Apache2 failure to start due to mod_ssl loading problem under Mac OS X 10.5 Leopard) ? MacPorts

※ 当然ながら自己責任です。


んで、デフォルトの /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 が直ってくれると思うので、それまではこれで行こう。


すごくバッドノウハウ的(根本的な解決方法ではない)だと思うけど、とりあえず目的は達成できた。

kentaf4kentaf4 2008/02/14 14:15 助かりました〜
ありがとうございます〜

heavenshellheavenshell 2008/02/14 22:24 お役に立てたようで、嬉しいです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証