ます’s Blog - どうでもいい記事100選

どうでもいい記事100選

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にも、それらしき記述があります()。


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スクリプトを一括置換するのと大差が無い。どっちもどっちダナ。しばらく待て!という事ですか。ソウデスカ。