[Tech] PHP+JAVA+APACHE ???

St0rM storm@elemental.it
Lun 1 Ott 2001 12:54:40 CEST


Allora.

Quello che a me serve, e che mi accingo a fare, e' installare il 
supporto per gli oggetti JAVA sotto PHP. Non mi interessa far funzionare 
APACHE con Java, l'unica cosa che mi serve e' farlo con PHP.

Le operazioni che ho fatto sono le seguenti:

-Installare JDK 1.2.2 (1.3.1 mi ha dato dei problemi). Banale, basta 
scompattare una directory, e casomai sistemare ld.so.conf e dare ldconfig.
-Ricompilare PHP. QUI ho avuto dei problemi. Con la versione 1.3.1 di 
JDK, aggiungendo --with-java si impallava durante il configure, dicendo 
che non trovava le zlib, che sono assolutamente li a posto loro. 
Cambiando il JDK con il 1.2.2 tutto va a meraviglia.

Qui la prima domanda. Se ho capito bene si PUO' compilare il tutto come 
un modulo esterno, da aggiungere eventualmente ad una installazione di 
PHP preesistente badando ad avere LE STESSE JDK e LO STESSO PHP, in 
termini di versione.

Come si fa???

Inoltre: Mi sembra pure di aver capito che alla fine quello che serve 
sta tutto nelle JRE, quindi dovrebbe essere possibile compilare il PHP 
anche avendo il JRE e non il JDK...giusto? L'unico problema e' che il 
PHP cerca le librerie COME SE ci fosse il JDK, sarebbe allor apossibile 
prenderlo in giro creando una dir JDKx.y.z e metterci dentro le JRE?

A questo punto, configuro il php.ini:
-------
(da qualche parte c'e' la extension_dir o come si chiama, uso gia' 
un'estensione per mysql)

[Java]
extension=libphp_java.so
java.class.path=/usr/lib/php4/php_java.jar:/usr/lib/php4
java.library.path=/usr/lib/php4


-------

Ok.

Preparo allora una pagina di prova:

---------
java.php

<?php

   $system = new Java("java.lang.System");
   print "Java version=".$system->getProperty("java.version")." <br>\n";
   print "Java vendor=".$system->getProperty("java.vendor")." <p>\n\n";
   print "OS=".$system->getProperty("os.name")." ".
               $system->getProperty("os.version")." on ".
               $system->getProperty("os.arch")." <br>\n";

   $formatter = new Java("java.text.SimpleDateFormat","EEEE,
	MMMM dd, yyyy 'at' h:mm:ss a zzzz");
   print $formatter->format(new Java("java.util.Date"))."\n";

?>

----------

Da shell tutto va bene:

[root@wind html]# php ./java.php

mi da l'output in HTML corretto (e' di la sull'altro PC non mi fate 
copiare tutto =)

Se provo ad aprire la pagina da APACHE... Mi da Errore!!! Mi dice che 
NON RIESCE ad avviare la JVM, e nel lor di errore di Apache trovo una 
riga che dice che non riesce a caricare libjava.so .

Ok problema intuibile, non trova le librerie, qualcosa relativo al Path. 
Mi ricordo di una certa variabile di sistema, LD_LIBRARY_PATH (e mi 
ricordo pure che dove la descriveva invitava a NON usarla, ma vabbe'). 
Gioco un po' per impostarla e noto che le cose cambiano.

LD_LIBRARY_PATH=/usr/lib:/lib:/usr/java/jdk1.2.2/lib:/usr/java/jdk1.2.2/jre/lib:/usr/java/jdk1.2.2/jre/lib/i386:/usr/java/jdk1.2.2/lib/i386
CLASSPATH=/usr/lib/php4

Imposto queste variabili e l'errore sparisce. Ma la pagina non si 
carica...Rimane li fermo in loading e dopo un po' va in timeout..

Idee ???

Ah, un'altra cosa. Ho letto su phpbuilder che usare il php per caricare 
oggetti java e' poco conveniente perche' il PHP ha un "cattivo" modo di 
gestire la cosa, e che sarebbe molto meglio usare Jakarta... Io che sono 
ignorante, so solo che jakarta e' un prodotto collegato ad Apache, ma 
niente di piu'. Tenendo conto che quello che serve a me e' far 
funzionare un oggetto Java per gestire un collegamento server to server 
(quello con Banca Sella per un sito di e-commerce), e che loro 
forniscono degli script gia' pronti (casomai da modificare) in PHP, JSP, 
ASP, coldfusion e basta... Insomma jakarta fa al caso mio?








Maggiori informazioni sulla lista flug-tech