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 / usr / bin / java echo shell_exec("java Test");
4 Réponses :
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);
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. P>
J'ai pensé à cela et essayé de mentionner cela dans mon message en utilisant "/ USR / bin / java
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 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).
<?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
?>
J'ai vu cela juste l'autre jour: Stackoverflow.com/search?q=call+java+Script+php a>
Votre classe Java est-elle dans un forfait? Si tel est le cas, vous devez spécifier le package et votre structure de répertoire doit refléter le package. Mettez un autre moyen, si vous êtes à une ligne de commande dans le même répertoire, pouvez-vous exécuter la classe Java manuellement en utilisant la même ligne?
Non, la classe Java n'est pas dans un package et j'ai testé la commande sur la ligne de commande et elle s'exécute avec succès.