exec(), Programm läuft nur als Task
Hallo,
ich starte von einer PHP-Website per exec() ein Programm lokal auf dem Server. Einen neuen User für den entsprechenden Anwendungspool habe ich eingerichtet (Nicht mehr "NETZWERKDIENSTE"). Das Programm startet (Sichtbar im Task-Manager) führt aber keine Aktionen aus. Erst nach dem "abschiessen" der Tasks macht das PHP-Script weiter.
Wie bekomme ich es hin, dass das Programm mit dem Desktop des angemeldeten Users interagiert oder zumindest die Aktionen ausführt die es soll? In dem Fall eine AT-Befehlsfolge an eine Serielle-Schnittstelle schicken ("Copy AT... COM3" funktioniert in diesem speziellen Fall nicht).
System:
Windows 2003 Server, SP2, NTFS, IIS6, PHP5 (ISAPI), MySQL5
Programme: ttermpro.exe, ttpmacro.exe (Teraterm)
Vielen Dank für euere Tipps
Gruss
jörg
ich starte von einer PHP-Website per exec() ein Programm lokal auf dem Server. Einen neuen User für den entsprechenden Anwendungspool habe ich eingerichtet (Nicht mehr "NETZWERKDIENSTE"). Das Programm startet (Sichtbar im Task-Manager) führt aber keine Aktionen aus. Erst nach dem "abschiessen" der Tasks macht das PHP-Script weiter.
Wie bekomme ich es hin, dass das Programm mit dem Desktop des angemeldeten Users interagiert oder zumindest die Aktionen ausführt die es soll? In dem Fall eine AT-Befehlsfolge an eine Serielle-Schnittstelle schicken ("Copy AT... COM3" funktioniert in diesem speziellen Fall nicht).
System:
Windows 2003 Server, SP2, NTFS, IIS6, PHP5 (ISAPI), MySQL5
Programme: ttermpro.exe, ttpmacro.exe (Teraterm)
Vielen Dank für euere Tipps
Gruss
jörg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 91329
Url: https://administrator.de/contentid/91329
Ausgedruckt am: 26.11.2024 um 12:11 Uhr
1 Kommentar
1. Um zu vermeiden, daß ein mit exec angestoßenes Programm bis zu seiner Beendung das PHP-Script anhält, mußt Du die Ausgabe des Programms in eine Datei oder einen anderen Ausgabestream umleiten. Ausgabe bezieht sich auf den Ausgabe-Stream, der dem Programm standardmäßig zugeordnet wird, oder eben auch nicht. Was nicht da ist, kann man auch nicht umleiten.
2. Eine Befehlsfolge an die Serielle Schnittstelle schicken könntest Du mit
cmd.exe /C "echo at... >com3:" >at.log
Die Grundeinstellungen der Schnittstelle, Baud-Rate etc. sind mittels Systemsteuerung passend voreinzustellen. Fraglicher ist, ob Du den IIS überhaupt zum Zugriff auf cmd.exe berechtigen wollen würdest.
3. http://de.php.net/manual/de/function.fopen.php#20935
(vorsicht mit dem mode-Befehl, für den gelten die Probleme wie unter 2)
4. Nimm Apache statt IIS.
2. Eine Befehlsfolge an die Serielle Schnittstelle schicken könntest Du mit
cmd.exe /C "echo at... >com3:" >at.log
Die Grundeinstellungen der Schnittstelle, Baud-Rate etc. sind mittels Systemsteuerung passend voreinzustellen. Fraglicher ist, ob Du den IIS überhaupt zum Zugriff auf cmd.exe berechtigen wollen würdest.
3. http://de.php.net/manual/de/function.fopen.php#20935
(vorsicht mit dem mode-Befehl, für den gelten die Probleme wie unter 2)
4. Nimm Apache statt IIS.