Komandozeilen-Programme ausführen
Jo
- php
0 Vinzenz Mai0 Jo0 Daniel0 Andreas Görtz0 FraFu
Hallo,
ist es möglich Komandozeilentools auf einem Server über PHP ausführen zu lassen? Ich müßte eine Funktion schreiben, die sowohl auf Linux (Ubuntu) als auch auf Windows Server 2003 lauffähig ist. Dabei werden die Kommandobefehle als string dynamisch generiert und sollen an das Tool geschickt und ausgeführt werden. Als Ergebnis werden Daten erzeugt, die wiederum zum download angeboten werden.
Für jeden Tipp dankbar
Jo
Hallo
ist es möglich Komandozeilentools auf einem Server über PHP ausführen zu lassen?
prinzipiell ja: Funktionen zur Programmausführung.
Da sollte etwas für Deinen Anwendungsfall passendes dabei sein.
Freundliche Grüße
Vinzenz
Hallo,
danke für den Tipp, wenn ich folgenden Code unter Windows (IIS 5) ausführe kommt es zu einer Fehlermeldung:
<?php
$command = 'C:\Inetpub\wwwroot\_script_resourcen\bin\test.exe';
exec($command);
?>
Die Berechtigungen sollten alle gegeben sein und der safe_Mode in der php.ini ist off.
Fehlermeldung: Warning: exec(): Unable to fork [...
Was muß ich tun?
Ahoi Jo,
$command = 'C:\Inetpub\wwwroot\_script_resourcen\bin\test.exe';
da der string in einfachen anführungszeichen (') ist musst du die \ nicht als \ eintragen. Was bei doppelten Anführungszeichen (") anders wäre. ich vermute den Fehler dort
MfG
Hi,
da der string in einfachen anführungszeichen (') ist musst du die \ nicht als \ eintragen. Was bei doppelten Anführungszeichen (") anders wäre.
das ist nicht ganz korrekt. Auch innerhalb von Double-Quotes muss der Backslash nicht escaped werden, falls er zusammen mit dem nachfolgenden Zeichen keine Escape-Sequenz bildet. Der backslash bildet aber in beiden Fällen eine Escape-Sequenz mit einem nachfolgenden Backslash, sodass zwei Backslashes in Folge _immer_ zu einem einzelnen Backslash konvertiert werden.
ich vermute den Fehler dort
ich meine mich zu erinnern, dass PHP unter IIS das gewünschte Programm nicht "direkt" ausführt/führen kann, sondern cmd.exe dazu benutzt. Das darf der Benutzer, unter dem der IIS läuft, vermutlich noch nicht.
Gruß,
Andreas.
Hallo!
ich meine mich zu erinnern, dass PHP unter IIS das gewünschte Programm nicht "direkt" ausführt/führen kann, sondern cmd.exe dazu benutzt. Das darf der Benutzer, unter dem der IIS läuft, vermutlich noch nicht.
Soetwas hab ich auch im Hinterkopf. Versuch das Programm mal über cmd und irgendwelche Parameter zu starten.
Schau dir einfach mal die Hilfe zu cmd.exe an. Einfach cmd /? in der Eingabeaufforderung eingeben.
Da gibt's glaube ich zb cmd /Start oder cmd /Call. Hab aber grad kein Windows zur Hand um das auszuprobieren.
mfg
frafu