2010-05-17 6 views
1

J'ai un programme Java qui génère un fichier HTML. Le programme Java prend deux paramètres d'entrée: fichier1 et fichier2, le fichier de sortie est spécifié par le "--fichier =".Java exécution JAR de PHP ne fonctionnera pas

Lorsqu'il est exécuté à partir de la ligne de commande (UNIX, Mac OS 10.6.2), il ressemble à ceci:

"java -jar program.jar http://my.testsite.com/test1.html http://my.testsite.com/test2.html --file=/path/to/jar/new_file_1274119954.html

exécution du programme forment la ligne de commande génère le fichier "new_file_TIEMSTAMP.html"

maintenant, je veux exécuter ce même PHP sous forme de ligne, donc je crée le script suivant:



$file1 = 'http://my.testsite.com/test1.html'; 
$file2 = 'http://my.testsite.com/test2.html'; 
$newFile = '/path/to/jar/new_file_'.time().'.html'; 


system("java -jar program.jar $file1 $file2 --file=$newFile"); 

$handle = fopen($newFile, "r"); 
$output = fread($handle, filesize($newFile)); 

echo "$output"; 

Comme vous pouvez le voir, je ne suis pas vraiment intéressé par la sortie de la console, mais plutôt dans le fichier généré par le programme.

J'ai également utiliser les appels suivants pour exécuter la commande de la console, mais aucun d'entre eux fonctionne lors de l'exécution de ce script PHP de mon navigateur.

Je ne sais pas s'il y a un réglage spécial que je dois activer dans mon php.ini, ou est quelque chose que je fais mal, mais je ne suis pas sûr de ce que je dois faire maintenant.

Votre aide est appréciée

PD:

Un message d'erreur que je ne reçois lors de l'utilisation du système appel est le suivant: javax.xml.transform.TransformerException: org.xml. sax.SAXException: setResult() doit être appelé avant startDocument().

Répondre

2

Eh bien, l'exception Java nous dit qu'il ya une exception XML là-bas, alors peut-être commencer par voir si votre fichier source est valide? Il est difficile de dire d'ici ce que fait l'application Java.

Aussi, je jeter un oeil pour voir si l'utilisateur apache ou PHP a l'autorisation d'exécuter l'application Java et créer des fichiers.

Bonne chance.

+0

C'était des autorisations, une chose si simple! Merci beaucoup – Onema

0

Je ne sais vraiment pas grand-chose à propos de PHP, mais est-il possible que lorsque vous faites l'appel system("java -jar program.jar $file1 $file2 --file=$newFile"), il n'évalue la valeur de $file1 et $file2, de sorte que vous lui demandez de trouver un fichier nommé $file1 , au lieu de test1.html?

Au lieu de cela, je pense que vous voulez quelque chose comme

$cmd = "java -jar program.jar " . $file1 . " " . $file2 . "--file=" . $newFile; 
system($cmd); 
0

En supposant que vous rencontré le même problème, je l'ai fait, en utilisant DaisyDiff, vous devez créer le répertoire avant qu'un fichier peut être placé en elle. Il ne créera pas les fichiers nécessaires par lui-même.

Espérons que cela aidera!

Questions connexes