Führt ein externes Programm mit php
ich habe ein problem mit php ! ich möchte ein externes Programm mit php . dieses Programm funktioniert in der Kommandozeile und der linux-Plattform . also muss es einfach gut funktionieren . aber ich versuche mehr Zeit und ich kann es nicht benutzen . also, was ist falsch !
das ist der link von dem Programm : http://www.lalescu.ro/liviu/fet/
und dies ist der Befehl, die arbeiten gut in der Befehlszeile und nicht in php :
./fet --inputfile=Hopwood.fet --outputdir=out
- und dies ist der php code :
<?php
`./fet --inputfile=Hopwood.fet --outputdir=out`
?>
ich hoffe, dieses Problem zu lösen, pb .
vielen Dank im Voraus ..
Update ich lade das ausführbare Programm und die Hopwood.fet-Datei für Sie versuchen es ..
dies ist ein link :
http://rapidshare.com/files/454756427/fet.tar.gz
- Es könnte uns auch helfen, wenn Sie formatiert Ihren code so konnten wir genau sehen, was Ihr versucht zu laufen.
- sind Sie sicher, dass Sie ausführen möchten ./fet im richtigen Unterverzeichnis?
- all right , ich gehe zu Bearbeiten meine Frage jetzt .
- Wie @stillstanding sagt. So möchten Sie vielleicht zu versuchen, mit den absoluten Pfad zu Ihrer binäre. zB.
/usr/bin/local/fet --inputfile=Hopwood.fet --outputdir=out
wo/usr/bin/local
ist das Verzeichnis mitfet
- absolut ..
- ich versuche aber auf keinen Fall !
- hey, das ist kein php-code! Ich Wette, Sie werden erhalten schwerer Fehler.
- backticks sind eine vollkommen akzeptable Ersatz für
shell_exec
Finden Sie unter: php.net/manual/en/language.operators.execution.php - haha, dann sollte ich überprüfen, meine Tatsache. Dank
- gibt es etwas, in deinem error-log?
- Sie können versuchen, das Programm compiliere ich es und laden es hoch , überprüfen Sie die Frage ..
- warten Sie eine minute. Ich denke, etwas fehlt hier. Haben Sie versuchen, führen Sie dieses Programm von der shell auf Ihrem hosting-server? oder man machte es NUR auf Ihrem eigenen linux-desktop / laptop / etc / irgendwas anderes nicht von Ihrem aktuellen server?
- der server ist mein laptop , ich benutze lamp-server und dem Befehl funktionieren im terminal ..
- ow, ich bekomme es...
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen Sie es in voller Pfad:
also werden Sie am Ende der Ausführung:
Stellen Sie außerdem sicher Laufenden Prozess hat die Fähigkeit zu schreiben, um Ihre
/path/to/your/out
UPDATE
Machen etwas klarer, bitte versuchen Sie, diesen Befehl ausführen:
UPDATE
als @mkotwd gesagt, auf eine weitere Antwort (nach dem Versuch, debug-code, siehe oben). Das problem ist, weil
fet
versuchen, Zugriff auf X-Server. So, wie @mkotwd Antwort, die Lösung ist hinzuzufügen:und der Befehl geworden:
Sieht es aus wie Sie ausgeführt fet von einer lokalen installation (basierend auf den ./fet-Befehl, den du gepostet hast).
Müssen Sie den Standort Ihres fet-installation in die PATH-variable.
Auf einem linux-system Bearbeiten Sie Ihre ~/.bashrc, und fügen Sie die folgenden:
wenn /home/mkotwd/fet ist, wo Sie installiert haben, fet.
Alternativ können Sie auch ein Verzeichnis ~/bin, fügen Sie es zu Ihrem WEG, wie oben erläutert, und erstellen einen symlink ~/bin/fet, dass Sie Punkte auf Ihr fet ausführbare Datei. Dies ist die empfohlene Lösung, da Sie nicht haben, hinzufügen PFAD das Verzeichnis für alle lokalen-Kommando, das man ausführen könnte in der Zukunft, können Sie einfach erstellen Sie symbolische Links zu den einzelnen ausführbaren Datei in ~/bin
Vielleicht wollen Sie auch heraus zu überprüfen http://php.net/manual/en/function.exec.php für das aufrufen von details, überlegungen zur Sicherheit, und Allgemeine Tipps gepostet von Benutzern verwendet habe, den Befehl für die verschiedenen Aufgaben.
Überprüfen
php -i | less
für:Könnte es eine solche Sicherheits-Maßnahmen, die verhindert, dass die kritischen Befehle (oder beides).
die Lösung ist das hinzufügen dieser Befehl vor :
so, dass der code geworden :