oci8 extension
昨日に続いて再び。Solaris8(sparc64bit)でOracle(64bit)を使う場合、PHPはコンパイルできません。
make処理の最後の方で落ちるのがムカつきます。
ld: fatal: file /usr/local/oracle-9.2.0.1.0/lib/libclntsh.so: wrong ELF class: ELFCLASS64 ld: fatal: File processing errors. No output written to .libs/libphp4.so make: Fatal error: Command failed for target `libphp4.la'
これを回避するにはconfigureスクリプトを一括置換して configure => makeを行って下さい。
OCI8_DIR/lib → OCI8_DIR/lib32
User Contributed Notesにも、それらしき記述があります(1・2・3)。
64-bit related changes
./configure will now behave differently if $ORACLE_HOME/lib32 exists
(this mostly happens at Solaris AFAIK)
CVSには取り込まれているようですが、ざっと見た限りPHP5.1からのようです。
AC_DEFUN([AC_OCI8_CHECK_LIB_DIR],[ PHP_CHECK_64BIT([ TMP_OCI8_LIB_DIR=lib32 ], [ TMP_OCI8_LIB_DIR=lib ]) AC_MSG_CHECKING([OCI8 libraries dir]) if test -d "$OCI8_DIR/lib" -a ! -d "$OCI8_DIR/lib32"; then OCI8_LIB_DIR=lib elif ! test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then OCI8_LIB_DIR=lib32 elif test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then OCI8_LIB_DIR=$TMP_OCI8_LIB_DIR else AC_MSG_ERROR([Oracle (OCI8) required libraries not found]) fi AC_MSG_RESULT($OCI8_LIB_DIR) ])
この辺を/(php-src)/ext/oci8/config.m4のバージョン・チェックしている前辺りに記述してconfigureスクリプトをリビルドすれば問題無さそう。。。
だけど、これじゃconfigureスクリプトを一括置換するのと大差が無い。どっちもどっちダナ。しばらく待て!という事ですか。ソウデスカ。