Alexander Foken: Programmaufruf mit exec() unter unix

Beitrag lesen

Moin Moin !

Hallo Alexander,

In Deinem Browser wirst Du onClick='' sehen.
stimmt!

Verstehst Du, warum Du onClick='' siehst? Das ist Dein Hauptproblem.

wenn die flash.exe im selben Verzeichnis steht wie die index.php, wozu brauche ich dann eine absolute Pfadangabe??

Unter Unix werden nur die Verzeichnisse nach ausführbaren Programmen durchsucht, die *EXPLIZIT* in der Environment-Variable PATH stehen. Unter DOS (und Windows) wird auch das aktuelle Verzeichnis durchsucht, noch vor den Verzeichnissen in PATH.

Stell' Dir vor (im Unix-Kontext), es gäbe ein anderes flash.exe in einem Verzeichnis, das vor dem aktuellen durchsucht wird. Dieses flash.exe würde deinen Account und sämtliche Daten löschen.

Mit einer absoluten Pfadangabe hast Du keines dieser Probleme, es wird *exakt* das Programm ausgeführt, das Du starten möchtest.

Bist Du sicher, das flash.exe ein ausführbares *UNIX*-Programm ist? DOS/Windows-Executables laufen auf normalen Unix-Systemen normalerweise nicht. Ebenso können binäre Programme normalerweise nicht problemlos zwischen verschiedenen Unix-Derivaten und/oder verschiedenen Plattformen ausgetauscht werden.

und wieso wird z.b: system('mpup') nicht ausgeführt?

Lasse Dir den Wert der Environment-Variablen PATH durch PHP ausgeben (PATH kann für jeden User und jeden Prozess anders sein, entscheidend ist eben PATH für den PHP-Prozess).

Ist mpup in einem der aufgeführten Verzeichnisse und hat der PHP-User das Recht, dieses Programm auszuführen?

Auch hier könnte eine absolute Pfadangabe helfen.

was muss noch mit rein?? oder wie wird es richtig gemacht? Ich glaube ich sehe das alles viel zu einfach und dann funktioniert nichts.

Lies Dir bitte einmal "Linux für Webworker" ([links:http://selfaktuell.teamone.de/artikel/server/linux/index.htm]) durch, damit Du mit einigen Unix-Konzepten vertraut wirst. (Aber der Artikel schrammt nur an der Oberfläche, es gibt noch viel mehr zu lernen ...)

wäre toll wenn du mir sagen könntest, wie das Script auszusehen hat, dass die datei mpup in einer unix console ausführt

Das geht nur mit Ein- und Ausgabeumleitungen, zudem müßte der PHP-Prozess zugriff auf eine Console haben - hat er aber normalerweise nicht.

Wenn Du mpup "nur so" ausführen willst, macht das aber überhaupt nichts. Du siehst nur keine Ausgabe.

Überprüfe die Fehlerrückgaben von system() und exec(). (Siehe http://www.php.net/)

Alexander

--
Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"