Apache エージェントは、libstdc++6 と依存関係があります。一部のサーバ(主に IHS および OHS)には、libstdc++.so.5 を使用してビルドされたモジュールがあります。この競合により Apache が正常に起動しなくなる可能性があります。

libstdc++5 の依存関係の確認

Web サーバに libstdc++.so.5 の依存関係があるかどうかを確認するには、次の手順を実行します。

  1. ご使用のWebサーバーのモジュールディレクトリにディレクトリを変更。
  2. 以下のコマンドを実行する。

    ldd *.so 2>&1 | grep -v 'execution permission' | grep 'libstdc++.so.5'
  3. このコマンドが結果を返す場合(たとえば「libstdc++.so.5 => /lib64/libstdc++.so.5」)、サーバは libstdc++.so.5 と依存関係があります。

解決の概要

libstdc++5 の競合を回避するには、Apache の起動時に libstdc++6 を libstdc++5 より前にロードする必要があります。この構成を実行するための一般的な手順は次のとおりです。

  1. libstdc++.so.6 へのパスを特定します。
  2. インストールに適した libstdc++.so.6 パスを決定します。 
  3. libstdc++6 をプリロードするには、LD_PRELOAD 環境変数を使用します。

これらの手順は、以下のセクションで説明されています。

libstdc++.so.6 へのパスを特定

コマンドプロンプトから、以下を実行します。

ldconfig -p | grep libstdc++.so.6

これにより、1 つまたは複数のパスが返されます。例:

/lib64/libstdc++.so.6
/lib/libstdc++.so.6

インストールに適した libstdc++.so.6 パスの決定

複数のパスが返された場合は、ご使用のApacheサーバーインストールに対してどちらが正しいパスなのか判断します。

実行しているオペレーティングシステムは64ビットだがIHSまたはOHSが32ビットの場合は、32ビットバージョンを選択します。例では次のようになります。

/lib/libstdc++.so.6

LD_PRELOADのエキスポートコマンドの追加

ご使用の IHS または OHS インストールの /bin ディレクトリにある envvars** ファイルを開きます。前のステップで確認した libstdc++.so.6 へのパスを使用して、以下の行を追加します。

export LD_PRELOAD=<path-to-libstdc++.so.6>

これで、libstdc++.so.5 より前に libstdc++.so.6 がロードされるようになり、競合を回避できます。