7
votes

Comment puis-je exécuter un programme Java dans un script PHP?

J'écris un simple script de téléchargement Web. L'objectif est de télécharger un fichier à l'aide de PHP, puis d'appeler un programme Java pour traiter ce fichier.
J'ai fait le travail de téléchargement du fichier, mais je ne peux pas obtenir de programme Java à exécuter avec succès à partir du script PHP.
J'ai essayé exec () code>, shell_exec () code> et système () code> sans résultats.
Pour la commande, j'ai utilisé " test Java code>" "," java / test code> "", " / usr / bin / java / test code> ", j'ai même configuré la demande en tant que fichier JAR sans résultat. La ligne du code que j'ai utilisé est la suivante:

echo shell_exec("java Test");


4 Réponses :


3
votes

Je ne sais pas vraiment, mais je suis venu un pont cross Php-Java peut-être peut-être aider

http://php-java-bridge.sourceforge.net/pjb/ p>

mise à jour: p>

J'ai testé cela avec Jasper Rapports, et il fonctionne vraiment sympa. Cela vous permettra d'étendre les classes Java avec PHP ou d'utiliser simplement la classe Java Lik c'était PHP. P>

$temp = new Java('java.sql.Timestamp');
$javaObject = $temp->valueOf('2007-12-31 0:0:0');


$params = new Java("java.util.HashMap");
$params->put("text", "This is a test string");
$params->put("date",$javaObject);


0 commentaires

1
votes

Il est possible que cela a à voir avec le chemin que l'exécutif est défectueux. Vous devrez peut-être expliquer explicitement votre chemin de classe avec un chemin absolu vers vos fichiers .Class ou Jar lors de l'appelant Java.


1 commentaires

J'ai pensé à cela et essayé de mentionner cela dans mon message en utilisant "/ USR / bin / java / test", mais lorsque la question a été postée, "" a été supprimé et il restait "/ Test". Désolé pour ça.



6
votes

J'ai eu du mal avec ceci pour un tout en essayant toutes sortes d'options avec Aucun résultat - le fichier n'est jamais créé (Le fichier est créé avec un absolu chemin donc ce n'est pas créé et je il suffit de ne pas trouver le fichier). Est-ce que quelqu'un avoir des idées? p>

Qu'est-ce que je pense que le problème est. Apache est "Personne" Group ?? (utilisateur Apache ??) qui exécutera le script Java qui va essayer de créer un fichier sur disque quelque part. Je suppose qu'il n'a pas la permission d'écrire à cet endroit. Vous devriez choquer ce dossier pour que l'utilisateur Apache puisse écrire dans ce dossier. p>

== p>

Tout d'abord, je tiens à vous indiquer que Calling Exec () d'un script pourrait Faites vraiment exploser votre serveur. Je vous conseillerais d'utiliser quelque chose comme Redis (voir ci-dessous) à la place. P>

== p>

second, je pense que je sais ce que le problème est. Vous devriez d'abord essayer d'exécuter l'exemple simple ci-dessous qui a fonctionné bien pour moi. P>

== p>

Première permission est parfaitement définie. Parce que Apache ne fonctionne personne (la plupart des temps). P>

J'ai essayé ce simple test moi-même sur Ubuntu avec PHP installé de repo. P>

test.java p>

$ php test.php
Hello World!

1 commentaires

+1 Pour un problème d'autorisations sur le dossier, vous écrivez le fichier à (c.-à-d. Vérifiez que l'utilisateur personne n'a accès à l'écriture dans le dossier que vous souhaitez écrire le fichier).



0
votes
<?php
$PATH="C:\Program Files\Java\jdk1.7.0_09\bin";

echo exec("javac theNameOfYourJavaProgram.java 2>&1");//shows # of errors
echo "<br />";
echo exec("java theNameOfYourJavaProgram 2>&1");//this line executes it
echo "<br />";
echo shell_exec("javac theNameOfYourJavaProgram.java 2>&1 ");//compiles it 

?>

0 commentaires