[Linuxtrent] Re: PHP + Java in SuSE 7.3

  • From: Daniele Gubert <dtm@xxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Tue, 16 Apr 2002 08:06:51 +0200

Dopo alcune notti insonni e milioni di tentativi, essendo passato anche per 
Jakarta/Tomcat + mod_php4-servlet, sono riuscito nello scopo di far girare 
la ext Java per PHP sotto SuSE 7.3.

Vediamo se ricordo alcune delle cosette che ho fatto...
qualcuna è probabilmente inutile o ridondante, ma l'effetto finale è quello 
desiderato.

Disclaimer: sono un newbie alla terza lezione del "corso di introduzione 
all'amministrazione di sistema", non fidatevi di quello che dico o scrivo, 
tra l'altro sotto l'effetto di un barilotto di birra che ho vinto [e 
bevuto] avendo risolto il problema.

1. Mi son letto la biografia di Sam Ruby, l'autore del modulo 
http://www.zend.com/zend/hof/sam.php

2. Sono tornato ad usare il JDK 1.3.1-b24 preinst. su SuSE, che ha i suoi 
bei .java_wrapper

3. Lo ho impostato come default attraverso lo script /usr/sbin/setDefaultJava

4. In /etc/rc.config ho impostato per sicurezza CREATE_JAVALINK="no"

5. Ho inserito un paio di dipendenze di libjava.so in /etc/ld.so.conf:
/usr/lib/jdk1.3.1/jre/lib/i386 e /usr/lib/jdk1.3.1/jre/lib/i386/server
quindi ho "salvato" con /sbin/ldconfig

6. Ho scaricato e scompattato il source rpm di mod_php4 da
ftp://ftp.tu-graz.ac.at/mirror/suse-linux/ftp.suse.com/suse/i386/update/7.3/zq1/mod_php4-4.0.6-148.src.rpm

7. con rpm -bp /usr/src/packages/SPECS/mod_php4.spec ho eseguito il prep 
che ha applicato le ultime patch ai sorgenti

8. in /usr/src/packages/BUILD/php-4.0.6 ho lanciato ./configure con un 
sottoinsieme delle opzioni originali + la famosa 
--with-java=/usr/lib/jdk1.3.1 e, naturalmente, --with-apxs=/usr/sbin/apxs 
volendo continuare ad usare PHP come modulo di Apache (DSO)

9. Avendo specificato l'opzione --with-imap, è stato necessario fare un 
export LDFLAGS="-lpam" da prompt

10. Ho dovuto installare un bel po' di pacchetti -devel prima di "giungere 
a compilazione" con make

11. Ho fermato Apache con rcapache stop

12. Ho rinominato la vecchia /usr/lib/apache/libphp4.so e l'ho sostituita 
con la nuova e più grassa
/usr/src/packages/BUILD/php-4.0.6/.libs/libphp4.so

13. Ho creato la directory /usr/lib/php4/ e ci ho copiato dentro
/usr/src/packages/BUILD/php-4.0.6/modules/libphp_java.so [probabilmente 
questa serve con PHP standalone (CGI)]
/usr/src/packages/BUILD/php-4.0.6/ext/java/php_java.jar

14. Son tornato in /etc/rc.config ed ho cambiato da "green":
JAVA_THREADS_TYPE="native"
JAVARUNT_THREADS_TYPE="native"

15. Ho modificato /etc/php.ini inserendo le seguenti voci:

extension_dir = /usr/lib/php4
extension=libphp_java.so
[Java]
java.class.path=/usr/lib/php4/php_java.jar:/home/mysite/myclasses
java.home=/usr/lib/jdk1.3.1
java.library=/usr/lib/jdk1.3.1/jre/lib/i386/server/libjvm.so
java.library.path=/usr/lib/jdk1.3.1/jre/lib/i386:/usr/lib/jdk1.3.1/jre/lib/i386/native_threads:/usr/lib/php4

16. Ho tolto un'istruzione LD_LIBRARY_PATH=... che avevo in precedenza 
inserito in /etc/rc.d/apache ed ho invece operato su 
/etc/profile.local.  NB: bisogna fare logout + login se si vuole che le 
modifiche del profile abbiano effetto.
export JAVA_HOME=/usr/lib/jdk1.3.1
export 
LD_LIBRARY_PATH="/usr/lib/jdk1.3.1/jre/lib/i386:/usr/lib/jdk1.3.1/jre/lib
export CLASSPATH=/usr/lib/jdk1.3.1/jre/lib/rt.jar:/home/mysite/myclasses

17. Ho rilanciato Apache con rcapache start

18. Ho copiato le mie classi in /home/mysite/myclasses... et voilà, adesso 
vengono "istanziate" dal codice PHP che "tira su" la JVM al volo. Cool!


Referenze:
http://www.php.net/manual/en/ref.java.php
http://www.phpbuilder.com/
http://www.rpm.org/RPM-HOWTO/


Saluti, :DTM. aka Daniele Gubert
Zorg New Media Vrtl.


-------------------------------------
At 06.31 12/04/2002 +0200, you wrote:

>Sto di nuovo bestemmiando contro la mia SuSE box perché non riesco a far
>funzionare il modulo java di PHP...
>
>1. Ho installato il java2 sdk 1.4.0
>2. Ho rifatto i link a jre e java
>3. Ho ricompilato php 4.06 con l'opzione --java
>4. Ho copiato le librerie necessarie "nei posti giusti"
>5. Ho modificato php.ini dove necessario
>6. Ho provato a inserire i percorsi dappertutto...
>
>Continuo a bekkare questo errore:
>"Cannot instantiate non-existent class: java in ..."
>
>Qualche buon diavolo c'è mai riuscito?
>Offro un barilotto di birra a chi mi tira fuori dalle peste ;)
>
>Ciao, :DTM. aka Daniele Gubert

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: