superfunk
Goto Top

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

Content-Key: 91329

Url: https://administrator.de/contentid/91329

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: 1bgks6
1bgks6 05.07.2008 um 04:25:39 Uhr
Goto Top
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.