From:             [EMAIL PROTECTED]
Operating system: Red Hat Linux 7.1
PHP version:      4.1.1
PHP Bug Type:     Java related
Bug description:  Segmentation fault (using jdk1.4 with php 4.1.1) & libphp_java.so 
not created

Hello,
I tried to compile php with Java support and faced these problems. My
configuration is RedHat Linux 7.1, apache_1.3.23, php-4.1.1 and Jdk1.4
beta 2.

I must mention here that earlier php versions 4.0.6 (or earlier) and
jdk1.2.2 worked without any problems (and without exporting
LD_LIBRARY_PATH

With php 4.1.1 and jdk1.4, I faced many problems:

***************************************Results with Apache
1.3.23**********************

I first tried to compile php and apache with almost all options available
as below: 

/////////////////////////////////////PHP////////////////////////////////////

./configure --prefix=/wwwroot/php --with-apache=/usr/src/apache_1.3.23 
--with-mod_charset --with-config-file-path=/wwwroot/php/ --with-openssl 
--with-zlib --enable-bcmath --with-bz2 --enable-calendar --with-cpdflib 
--with-png-dir --with-jpeg-dir --with-tiff-dir --enable-ctype --with-curl

--with-db3 --with-dom --enable-exif --enable-filepro --enable-ftp 
--with-gd --enable-gd-native-ttf --with-xpm-dir --with-freetype-dir=/usr 
--with-ttf --with-t1lib --with-gettext --with-gmp --with-hyperwave 
--with-iconv --with-imap --with-kerberos --with-imap-ssl --with-ircg 
--with-ldap --enable-mbstring --enable-mbstr-enc-trans 
--with-mcal=/usr/src/libmcal --with-mhash
--with-mnogosearch=/usr/local/mnogosearch --with-mysql --with-pgsql
--with-pspell --with-qtdom --enable-trans-sid --enable-shmop --with-snmp
-enable-ucd-snmp-hack --enable-sockets --with-regex=php --with-swf 
--enable-wddx --with-expat-dir=/usr/local --enable-xslt --with-xslt-sablot

--with-yaz=/usr/local/lib --enable-yp --with-zip --with-pdflib 
--enable-versioning --with-tsrm-st --with-tsrm-pthreads 
--enable-track-vars --enable-overload --with-mcrypt 
--with-java=/usr/java/j2sdk1.4.0 --enable-sysvsem --enable-sysvshm 
--with-xmlrpc

////////////////////////////////////////APACHE////////////////////////////////////

./configure --prefix=/wwwroot --activate-module=src/modules/php4/libphp4.a
--with-perl=/usr/bin/perl --enable-module=auth_anon
--enable-module=auth_dbm --enable-module=auth_db
--enable-module=auth_digest --enable-module=cern_meta 
--enable-module=example --enable-module=expires --enable-module=headers
--enable-module=info --enable-module=log_agent --enable-module=log_referer
--enable-module=mime_magic --enable-module=mmap_static
--enable-module=proxy --enable-module=rewrite --enable-module=so 
--enable-module=speling --enable-module=unique_id
--enable-module=usertrack --enable-module=vhost_alias
////////////////////////////////////////////////////////////////////////////////////

No libphp_java.so was created with these options under
/usr/src/php-4.1.1/modules or under /usr/src/php-4.1.1/ext/java and only
libphp_java.a was created. Under /wwwroot/php/lib/php/20010901 also only
libphp_java.a was installed after make install.

Then thinking that java support might have been built in with this
version. I tried to access sample jver.php file. But message, unable to
create instance of non-existing class etc. was displayed.


Then I tried to compile php with only --with-apache=/usr/src/apache_1.3.23
and --with-java=/usr/java/j2sdk1.4.0 options and this time libphp_java.so
was created. But java didn't work (even after enabling [java] in php.ini
and exporting LD_LIBRARY_PATH as mentioned below).

I wanted to enable other php options so I deleted apache and php source
and install directories and tried to install php again as apache shared
module (libphp4.so) with following options

//////////////////////////////PHP////////////////////////////////////

./configure --prefix=/wwwroot/php --with-apxs=/wwwroot/bin/apxs 
--with-mod_charset --with-config-file-path=/wwwroot/php/ --with-openssl 
--with-zlib --enable-bcmath --with-bz2 --enable-calendar --with-cpdflib 
--with-png-dir --with-jpeg-dir --with-tiff-dir --enable-ctype --with-curl

--with-db3 --with-dom --enable-exif --enable-filepro --enable-ftp 
--with-gd --enable-gd-native-ttf --with-xpm-dir --with-freetype-dir=/usr 
--with-ttf --with-t1lib --with-gettext --with-gmp --with-hyperwave 
--with-iconv --with-imap --with-kerberos --with-imap-ssl --with-ircg 
--with-ldap --enable-mbstring --enable-mbstr-enc-trans 
--with-mcal=/usr/src/libmcal --with-mhash 
--with-mnogosearch=/usr/local/mnogosearch --with-mysql --with-pgsql 
--with-pspell --with-qtdom --enable-trans-sid --enable-shmop --with-snmp 
-enable-ucd-snmp-hack --enable-sockets --with-regex=php --with-swf 
--enable-wddx --with-expat-dir=/usr/local --enable-xslt --with-xslt-sablot

--with-yaz=/usr/local/lib --enable-yp --with-zip --with-pdflib 
--enable-versioning --with-tsrm-st --with-tsrm-pthreads 
--enable-track-vars --enable-overload --with-mcrypt 
--with-java=/usr/java/j2sdk1.4.0 --enable-sysvsem --enable-sysvshm 
--with-xmlrpc

///////////////////////////////////APACHE///////////////////////////////////////

./configure --prefix=/wwwroot --with-perl=/usr/bin/perl 
--enable-module=auth_anon --enable-module=auth_dbm
--enable-module=auth_db
--enable-module=auth_digest --enable-module=cern_meta 
--enable-module=example --enable-module=expires --enable-module=headers 
--enable-module=info --enable-module=log_agent --enable-module=log_referer

--enable-module=mime_magic --enable-module=mmap_static 
--enable-module=proxy --enable-module=rewrite --enable-module=so 
--enable-module=speling --enable-module=unique_id 
--enable-module=usertrack --enable-module=vhost_alias

This time libphp_java.so was created and installed.

I enabled java support in php.ini as below:

[Java]
java.home=/usr/java/j2sdk1.4.0:/wwwroot/htdocs
java.class.path=/wwwroot/php/lib/php/php_java.jar
extension_dir=/wwwroot/php/lib/php/20010901
extension=libphp_java.so
java.library=/usr/java/j2sdk1.4.0/jre/lib/i386/client/libjvm.so

With above options libphp_java.so was shown as loaded by phpinfo().

When I tried to access that sample file provided with java extension
(jver.php) it produced error that libjvm.so was unable to load
libjava.so.

Then I exported LD_LIBRARY_PATH as:
export
LD_LIBRARY_PATH=/usr/java/j2sdk1.4.0/jre/lib/i386/native_threads:/usr/java/j2sdk1.4.0/jre/lib/i386:/usr/java/j2sdk1.4.0/jre/lib/i386/client;


Then I restarted apache from same shell in which I exported
LD_LIBRARY_PATH.
This time when I accessed jver.php browser sent the request and just
waited and waited and then exited with some message like network error
etc. I had enabled php error logging but nothing was entered in that file.
Then when I looked at apache error_log I found so segmentation fault
produced by php:

//////////////////////////////////////////////////////////////////////////////
[Sat Feb 23 20:51:09 2002] [notice] Digest: generating secret for digest 
[Sat Feb 23 20:51:48 2002] [notice] child pid 704 exit 
signal Segmentation fault (11)
[Sat Feb 23 20:52:55 2002] [notice] child pid 703 exit 
signal Segmentation fault (11)
[Sat Feb 23 20:53:22 2002] [notice] child pid 706 exit 
signal Segmentation fault (11) // errors produced by php
authentication ...
/////////////////////////////////////////////////////////////////////////////////

Then I accessed jver.php again and these messages increased in apache
error_log. I knew these errors were due to some problem in php. But I
don't know what is the problem.

I changed java settings in php.ini as below but it still didn't work and
same error ("network error and segmentation fault in apache error_log")

/////////////////////////////////////////////////////////
[Java]
java.home=/usr/java/j2sdk1.4.0:/wwwroot/htdocs
java.class.path=/wwwroot/php/lib/php/php_java.jar
extension_dir=/wwwroot/php/lib/php/20010901
extension=libphp_java.so
java.library=/usr/java/j2sdk1.4.0/jre/lib/i386/libjava.so // this was
changed
///////////////////////////////////////////////////////////////////////////////

------With JDK 1.2.2 it worked------------------------------------

Then thinking that there might be problem with Jdk1.4, I installed Jdk1.3
and then Jdk1.2.2. With Jdk1.2.2 I compiled every thing again from
beginning and configure options changed to
--with-apache=/usr/src/apache_1.3.23 and --with-java changed according to
jdk1.2.2 paths. libphp_java.so was produced this time. When jver.php was
accessed this time errors were about unable to find libjvm.so and other
libs etc.
I exported LD_LIBRARY_PATH with paths of Jdk1.2.2 and restarted apache.
Finally this time it worked and Java Version was displayed.

I added this export to /root/.bashsrc and then to /etc/profile and finally
in /etc/httpd start function but this variable wasn't set and I had to
manually export LD_LIBRARY_PATH every time and then restart apache only
then java worked.
-- 
Edit bug report at http://bugs.php.net/?id=15702&edit=1
-- 
Fixed in CVS:        http://bugs.php.net/fix.php?id=15702&r=fixedcvs
Fixed in release:    http://bugs.php.net/fix.php?id=15702&r=alreadyfixed
Need backtrace:      http://bugs.php.net/fix.php?id=15702&r=needtrace
Try newer version:   http://bugs.php.net/fix.php?id=15702&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=15702&r=support
Expected behavior:   http://bugs.php.net/fix.php?id=15702&r=notwrong
Not enough info:     http://bugs.php.net/fix.php?id=15702&r=notenoughinfo
Submitted twice:     http://bugs.php.net/fix.php?id=15702&r=submittedtwice

Reply via email to