PHP 4 の --enable-versioning はトラブルの元か?

  PHP 3 と PHP 4 を共存させる場合に,configure オプションに --enable-versioning を指定します.
  実はこれが思わぬ落とし穴になる場合があります.

  それは,DSO で拡張モジュールが動的にロードできないというものです.
  PHP 4.4.4 + Apache 1.3.37 on Solaris 10 x86 の環境なので,もしかしたら環境依存かもしれません.

  コンパイル・インストールはうまくいきますが,Apache を再起動すると以下のようなエラーが出ます.

- SQLite の場合

PHP Warning:  Unknown(): Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20020429/sqlite.so' - ld.so.1: httpd: fatal: relocation error: file /usr/local/lib/php/extensions/no-debug-non-zts-20020429/sqlite.so: symbol executor_globals: referenced symbol not found in Unknown on line 0

- Xdebug の場合

Failed loading /usr/local/lib/php/extensions/no-debug-non-zts-20020429/xdebug.so:  ld.so.1: httpd: fatal: relocation error: file /usr/local/lib/php/extensions/no-debug-non-zts-20020429/xdebug.so: symbol zend_compile_file: referenced symbol not found

  CLI 版では,全く問題なくロードできるので,原因が全然分かりませんでした.
  これらのエラーが出る場合は,--enable-versioning を外して PHP 4 を再コンパイルするとうまくいくと思います.

  もはや,PHP 3 を共存させることは皆無に等しいと思うので,--enable-versioning のことは忘れてしまったほうがよさそうです.

  参考までに --enable-versioning をマニュアルを見てみると,

--enable-versioning

   要求されるシンボルのみをエクスポートします。 詳細な情報は INSTALL を参照ください。
--enable-versioning

   Solaris 2.x および Linux が提供するバージョン管理機能を 有効にします。PHP 3 限定です!

  とあります.

- Configure オプション
  http://www.php.net/manual/ja/configure.php

- ref.: Blog::koyhoge - [PHP] --enable-versioningを止めるの巻
  http://d.hatena.ne.jp/koyhoge/20061213/1165999933