[PHP-users 8286] PHPでJavaと連携しようとするとchild pid XXXXX exit signal Segmentation fault

桝形 誠二 php-users@php.gr.jp
Tue, 25 Jun 2002 18:18:57 +0900


こんにちわ、桝形です。

表題の通り、PHPでJavaと連携しようとするとApacheの子プロセス
が死んでしまいます。

Bug DBや、当MLのアーカイブ、Google等で探しているのですが、
似たような事例を見つける事ができませんでした。

phpinfoで確認すると、
-------------------------------------------------------
java.class.path /usr/local/lib/php/php_java.jar
java.home /usr/local/jdk1.2.2
java.library /usr/local/jdk1.2.2/./jre/lib/i386/libjava.so
java.library.path /usr/local/lib/php/extensions/no-debug-non-zts-20020429
-------------------------------------------------------
と、反映されているみたいなのですが、
-------------------------------------------------------
<?
echo "[".java_last_exception_get( )."]<BR>\n";
echo "[".java_last_exception_clear( )."]<BR>\n";
?>
-------------------------------------------------------
や、
-------------------------------------------------------
<?
$system = new Java( 'java.lang.System' );
print 'Java version='.$system->getProperty('java.version').' <br>';
print 'Java vendor=' .$system->getProperty('java.vendor').'  <br>';
print 'OS='.$system->getProperty('os.name').' '.
            $system->getProperty('os.version').' on '.
            $system->getProperty('os.arch').' <br>';
?>
-------------------------------------------------------
等のスクリプトを実行すると、Apacheの子プロセスが死んで
しまいます。

OS     : RedHat Linux6.2J
Apache : 1.3.26
PHP    : 4.2.1(国際化)
JDK    : 1.2.2

本当はJDKのバージョンを上げたりしてみたいのですが、この件で
引っかかっており、おあづけ状態になってしまっています。

/etc/ld.so.confに下記の4行を追加。

/usr/local/jdk1.2.2/jre/lib/i386
/usr/local/jdk1.2.2/jre/lib/i386/classic
/usr/local/jdk1.2.2/jre/lib/i386/green_threads
/usr/local/jdk1.2.2/jre/lib/i386/native_threads

.bashrcには

export PATH=$PATH:/usr/local/jdk1.2.2/bin
export JAVA_HOME=/usr/local/jdk2.2

を追加しました。これもphpinfoで確認できています。

PHPのコンパイルオプションは、

./configure \
--with-apxs=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/php/lib \
--with-pear=/usr/local/php/pear \
--enable-track-vars \
--enable-mbstr-enc-trans \
--enable-mbstring \
--enable-mbregex \
--enable-zend-multibyte \
--with-java=/usr/local/jdk1.2.2 \
--with-iconv=/usr/local/iconv \
--with-mysql=/usr/local/mysql \
--with-pgsql=/usr/local/pgsql \
--with-interbase=/opt/interbase \
--enable-dbx \
--enable-dio \
--with-namazu=/usr/local/namazu \
--with-kakasi=/usr/local/kakasi \
--with-chasen=/usr/local/chasen \
--with-gd=/usr/local/gd \
--with-ttf=/usr/local/freetype \
--with-jpeg-dir=/usr/local/jpeg \
--with-png-dir=/usr/local/png \
--with-zlib-dir=/usr/local/zlib \
--with-pdflib=/usr/local/pdf \
--with-tiff-dir=/usr/local/tiff \
--with-ming=/usr/local/ming \
--with-gettext=/usr/local \
--with-zip=/usr/local/zziplib \
--enable-ftp \
--enable-calendar \
--enable-bcmath \
--enable-trans-sid \
--disable-debug \
--enable-inline-optimization \
--enable-overload \
--enable-memory-limit \
--enable-versioning

としてインストールして、php.iniを下記の様に編集しました。

java.class.path   = /usr/local/lib/php/php_java.jar
java.home         = /usr/local/jdk1.2.2
java.library.path = /usr/local/lib/php/extensions/no-debug-non-zts-20020429
extension         = java.so

説明不足や足りない情報があるかもしれませんが、
何かお気づきの点がありましたら、ご指摘願います。
_______________________

   桝形 誠二( Masugata Seiji )
   E-Mail : s.masugata@digicom.dnp.co.jp

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄