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). Questions I have begin with @@@@ ( four @ symbols). With php 4.1.1 and jdk1.4, I faced 100s of 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. @@@@What is the problem above. Is there any way to enable java support with only static libphp_java.a. 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 pro vied 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. @@@@Where should I add this export command so that I don't have to manually type this every time before starting apache. *****************************Result with APACHE 2**************************** Then I tried to compile php with apache 2 beta with options changed to --with-apache=/usr/src/httpd-2_0_28 but php didn't compile because I think source structure of apache 2.0 is different from apache 1.3. Then I tried option --with-apxs2=/usr/src/httpd-2_0_28 and this time --with-xmlrpc option produced some errors so I removed --with-xmlrpc. Finally, it compiled and a shared module was produced under apache modules directory. LoadModule php4_module entry was automatically made by php install in httpd.conf. I added this option in httpd.conf <Files *.php> SetOutputFilter PHP SetInputFilter PHP </Files> and then restarted apache but php didn't work and segmentation fault message was added to httpd.conf. @@@@@Does php 4.1.1 support apache 2.0 and --with-apache option or only with-apxs2 option is supported and why --with-xmlrpc produces errors when used with apache 2. I have tried different combinations and different options, about 20-30 (each time compiled php and apache after make distclean) times on my slow Pentium 1 computer in last two months. It takes 50 minutes every time. So please try to find solution to this problem.