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