Keine Ausgabe mit passthru in PHP (kein PHP Fehler!)

  • Themenstarter Themenstarter krabo
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
K

krabo

Gast
Hallo,

ich habe folgenden Aufruf über die Shell:

/usr/local/java/java/bin/java -classpath .:generator.jar voucher

funktioniert auch wunderbar. Aber wenn ich in PHP drauf zugreife, kommt nichts

<?php
...
echo passthru('/usr/local/java/java/bin/java -classpath .:vouchergenerator.jar voucher');
...
?>

Ich habe es mit system, exec und shell_exec versucht bis ich gemerkt habe, dass es nicht daran liegt, denn passthru(ls -all) funktioniert einwandfrei.

Woran kann es liegen, dass ich über die Shell eine Ausgabe bekomme, aber über PHP nicht?
 
echo passthru('/usr/local/java/java/bin/java -classpath .:vouchergenerator.jar voucher');

wofür steht der Punkt im Classpath? 🙂

schon mal drüber nachgedacht, in welchem Directory bist du eigentlich wenn du exec aufrufst (hat dir "ls" ein Verzeichnis ausgegeben, in dem voucher.class und vouchergenerator.jar liegen)?

ausserdem Schreibt man Klassen mit einem Grossbuchstaben
 
Bleiglanz hat gesagt.:
echo passthru('/usr/local/java/java/bin/java -classpath .:vouchergenerator.jar voucher');

wofür steht der Punkt im Classpath? 🙂

Dafür, dass auch Klassen im aktuellen Arbeitsverzeichnis verwendet werden. Oder war das ironisch gemeint? :?

Bleiglanz hat gesagt.:
schon mal drüber nachgedacht, in welchem Directory bist du eigentlich wenn du exec aufrufst (hat dir "ls" ein Verzeichnis ausgegeben, in dem voucher.class und vouchergenerator.jar liegen)?

ausserdem Schreibt man Klassen mit einem Grossbuchstaben

Stimmt eigentlich. krabo, Du solltest bei der Jar-Datei vielleicht auch den Pfad angeben. Das ganze sollte dann irgendwie so aussehen:
Code:
echo passthru('/usr/local/java/java/bin/java -classpath .:/tmp/vouchergenerator.jar Voucher');
 
Ja stimmt, das Verzeichnis ist nicht richtig. Aber trotzdem bekomme ich es nicht so hin wie ich möchte. Habe jetzt erstmal voucher.class und vouchergenerator.jar in das verzeichnis kopiert von wo das script ausgeführt wird. funktioniert.

aber besser wäre:

./ script.php
scripts/java/voucher.class
vouchergenerator.jar


und mit
Code:
/usr/local/java/java/bin/java -classpath .:scripts/java/vouchergenerator.jar voucher

oder
Code:
/usr/local/java/java/bin/java -classpath .:scripts/java/vouchergenerator.jar scripts/java/voucher

funktioniert es nicht. Bei letzteren kommen classDefErrors.

Was mache ich falsch?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben