プロが教える店舗&オフィスのセキュリティ対策術

ご教授願います。
LINUX上でPHPをソースからビルドした場合、例えば./configureオプションに
--with-readline というオプションをつけたとします。その場合別途インストールした
libreadlline.soというモジュールが共有ライブラリとして動的に作用しますよね?
lddコマンドで共有ライブラリをしらべると
linux-vdso.so.1 => (0x00007fff86bff000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f70ed4ab000)
libz.so.1 => /lib64/libz.so.1 (0x00007f70ed294000)
libexslt.so.0 => /usr/lib64/libexslt.so.0 (0x00007f70ed080000)
libtidy-0.99.so.0 => /usr/lib64/libtidy-0.99.so.0 (0x00007f70ece21000)
libreadline.so.6 => /lib64/libreadline.so.6 (0x00007f70ecbdd000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f70ec9bb000)
librt.so.1 => /lib64/librt.so.1 (0x00007f70ec7b3000)
libmcrypt.so.4 => /usr/local/lib/libmcrypt.so.4 (0x00007f70ec580000)
libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f70ec325000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f70ec0ff000)

とこのような共有状態が確認できます。だだこれだと、libreadline.so.6 => /lib64/libreadline.so.6という共有モジュールを
意図して削除した場合、動的リンクができずに php -a によるインタラクティブモードが動かせなくなります。
これを回避するために、静的リンク?というのでしょうかphpバイナリそのものに組み込むことはできないのでしょうか?
つまり外部のlibreadline.soに依存せずにphpを動かすと行った具合です。
もちろん、これがなんのいみのない処理なのはわかります。起動するたびにメモリを大量に消費してしまうのでしょう。
ただ、こういうlibreadline.soなどの共有モジュールをphpバイナリに組み込める方法があるかどうかをしって実際に試してみたいのです。
LINUXなどPHPなどに造詣が深い方よろしっくご教授ください。お願い致します。

A 回答 (1件)

ちょっと調べるのが面倒なのでやっていませんが



configureに
--disable-shared
とか
--enable-static
とかは無いですか?

場合によっては、使用するライブラリ全てを--enable-static --disable-shared相当でビルドしなおす必要があるかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!