Ich versuche eine Jar-Datei im Backend meines PHP-Codes zu starten. Aber ich bekomme nicht die gewünschte Ausgabe. Es gibt eine JAR-Datei, die im Hintergrund läuft und den Page Rank eines beliebigen Schlüsselworts zurückgibt und Domain ihm gegeben. Ich füge den Code an, bitte schlagen Sie mir eine Lösung vor, denn wenn ich es auf dem Terminal starte, gibt es eine korrekte Ausgabe.
Hier ist der Code:
%Vor%Ich habe gerade das Fehlerprotokoll von Apache überprüft und der letzte gefundene Fehler war:
sh: java: Befehl nicht gefunden
Aber wie ich bereits gesagt habe, habe ich den gleichen Befehl über SSH verwendet, um den Java-Befehl auszuführen. Es gibt also keine Möglichkeit, JAVA nicht auf dem Server zu installieren. Bitte helfen Sie mir aus diesem Durcheinander ...
Wenn die JAR-Datei in die Standardausgabe schreibt, können Sie exec verwenden.
Hier ist ein Beispiel, wie ich es benutze:
%Vor%Aber wie du sagst:
%Vor%Es bedeutet, dass es keinen Pfadalias für Java von PHP gibt. Verwenden Sie einfach den vollständigen Java-Pfad zur ausführbaren Datei / usr / bin / java.
Vorausgesetzt, Sie rufen java
auf. Meine Wette ist, dass die Ausgabe in der Java-Konsole angezeigt wird und nicht in der Shell, wo PHP die Textinformationen abrufen kann.
Wie löst man dieses Dilemma?
Nun, Sie könnten die Ergebnisse in eine Datei schreiben, wenn Sie die Java-Quelle ändern müssen, und dann diese Datei über PHP lesen, um die Ergebnisse zu erhalten. Die Möglichkeit einer Kollision wäre hier ziemlich gut. Die andere Möglichkeit besteht darin, Java mit Ihrer MySQL-Datenbank verbinden zu lassen (falls Sie eine hatten) und dann das Java auszuführen und dann die Datenbank nach der Antwort abzufragen. Natürlich müssten Sie Java eine Möglichkeit geben, die Daten einzugeben, um einen Datensatz einzufügen, den Sie identifizieren könnten (ein Hash von irgendeiner Art), ich habe das nie in Java getan, nur eine Theorie, wie Sie könnten in der Lage sein, es zu tun .
Aktualisieren
Sie können die Standardausgabe wie in darko petreski als weitere Option ebenfalls.
Wenn der PHP-Code in einem Server ausgeführt werden soll (und nicht über eine Befehlszeile), ist der Benutzer, der die ausführbare Java-Datei ausführt, www-data, nicht Sie. Stellen Sie in diesem Fall sicher, dass www-data über die Berechtigung verfügt, die JAR-Datei zu lesen und die ausführbare Java-Datei auszuführen.
Das erste, was ich überprüfen / ändern würde, ist die Zeile in der Funktion, in der Sie die $jarPath
Variable daraus erstellen:
dazu:
%Vor% Der abschließende Schrägstrich ist möglicherweise nicht in $_SERVER['DOCUMENT_ROOT']
vorhanden, was Probleme verursachen könnte.
Ich gehe davon aus, dass Sie den Java-Befehl wie folgt ausführen, wenn Sie sagen, dass er von der Konsole ausgeführt wird:
%Vor% Ich würde sicherstellen, dass Sie den Pfad zur Java-Binärdatei in der $command
-Variable wie folgt einfügen ...
Der Benutzer, der den Webserverprozess besitzt, hat möglicherweise keine $ PATH-Variable, die den Pfad zur Java-Binärdatei enthält.