Problem - PHP, IIS 6, Server 2003 - externe Programme aufrufen
Hallo!
Ich habe ein Problem beim ausführen externer Programme.
Wie schon Titel erwähnt handelt es sich um:
- PHP
- IIS 6
- Server 2003
Beschreibung:
Ich möchte über PHP ("system()", "exec()") ein Programm aufrufen (in diesem speziellen Fall Ghostscript, spielt aber keine Rolle, alle anderen Programme reagieren ähnlich).
Im TaskManager wird mir auch angezeigt, dass die cmd.exe und die gswin32c.exe ausgeführt werden. Jedoch bleibt die php Seite "hängen" und das Programm wird nicht weiter ausgeführt (0% Auslastung).
Ich habe bereits die entsprechenden Rechte für IUSR_XXX den Programmen zugewiesen (cmd.exe, gswin32.exe).
Hat jemand eine Idee woran es liegen könnte!?
Vielen Dank im Voraus!
Christian
Ich habe ein Problem beim ausführen externer Programme.
Wie schon Titel erwähnt handelt es sich um:
- PHP
- IIS 6
- Server 2003
Beschreibung:
Ich möchte über PHP ("system()", "exec()") ein Programm aufrufen (in diesem speziellen Fall Ghostscript, spielt aber keine Rolle, alle anderen Programme reagieren ähnlich).
Im TaskManager wird mir auch angezeigt, dass die cmd.exe und die gswin32c.exe ausgeführt werden. Jedoch bleibt die php Seite "hängen" und das Programm wird nicht weiter ausgeführt (0% Auslastung).
Ich habe bereits die entsprechenden Rechte für IUSR_XXX den Programmen zugewiesen (cmd.exe, gswin32.exe).
Hat jemand eine Idee woran es liegen könnte!?
Vielen Dank im Voraus!
Christian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 12500
Url: https://administrator.de/contentid/12500
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
8 Kommentare
Neuester Kommentar
Schau mal in phpinfo(), ob system und exec() ueberhaupt auf deinem Server erlaubt sind.
Es kann auch sein, dass sie nur teilweise erlaubt sind.
Gruss Markus
Es kann auch sein, dass sie nur teilweise erlaubt sind.
Gruss Markus
Dann nehme ich an, dass system() und exec() aus Sicherheitsgruenden irgendwie beschraenkt sind.
Da habe ich aber nicht so viel Ahnung von diesen Einstellungen und kann dir nicht sagen, wie du das aendern kannst. Wende dich da am besten an deinen Anbieter, bzw. falls der Server in deinen eigenen Haenden ist, frag mal in Supportforum von Apachefriends. (http://www.apachefriends.org/f/)
Gruss Markus
Da habe ich aber nicht so viel Ahnung von diesen Einstellungen und kann dir nicht sagen, wie du das aendern kannst. Wende dich da am besten an deinen Anbieter, bzw. falls der Server in deinen eigenen Haenden ist, frag mal in Supportforum von Apachefriends. (http://www.apachefriends.org/f/)
Gruss Markus
hmm... davon habe ich keine Ahung, aber ich nehme mal an, dass es da auch irgendwie ein Supportforum gibt.
Markus
Markus
Das Problem kenne ich und konnte es leider nicht lösen, habe aber einen Workaround gefunden, wie man die Vorteile des IIS nutz und zusätzlich Apache einsetzt.
Vielleicht ganz kurz um IIS 6.0: Der IIS kann Systembefehle ausführen, wenn man die Windows-Authentifizierung aktivert (für die auszuführende Datei oder für das ganze Verzeichnis) und dann als Administrator auf den Webserver zugreift. (Man muss also nur lokal als Administrator angemeldet sein). Ist man hingegen als User angemeldet, dann geht das nicht, obwohl man den entsprenden Dateien die Rechte gibt. Warum das so ist, weiss ich leider nicht und scheinbar gibt es auch keine Möglichkeit dies zu ändern.
Da ich die Authentifizierung des IIS nutzen möchte hab ich einfach die Daten mit einem PHP-Skript in einer Session gespeichert und in einem Frame auf die Startseite des Apaches zugegriffen. Da der Browser sich die Session-Id merkt, brauch ich nicht einmal die ID mit zu übermitteln. Das PHP-Skript auf dem Apache-Server ließt diese Anmeldinformationen wieder aus und führt das Skript bzw. die Anwendung auf dem Server aus. Bei Apache gibt es diese Rechteprobleme nicht. Vielleicht hift diese Methode ja. Ach ja, Apache und IIS sollten auf verschiedenen Ports laufen.
Vielleicht ganz kurz um IIS 6.0: Der IIS kann Systembefehle ausführen, wenn man die Windows-Authentifizierung aktivert (für die auszuführende Datei oder für das ganze Verzeichnis) und dann als Administrator auf den Webserver zugreift. (Man muss also nur lokal als Administrator angemeldet sein). Ist man hingegen als User angemeldet, dann geht das nicht, obwohl man den entsprenden Dateien die Rechte gibt. Warum das so ist, weiss ich leider nicht und scheinbar gibt es auch keine Möglichkeit dies zu ändern.
Da ich die Authentifizierung des IIS nutzen möchte hab ich einfach die Daten mit einem PHP-Skript in einer Session gespeichert und in einem Frame auf die Startseite des Apaches zugegriffen. Da der Browser sich die Session-Id merkt, brauch ich nicht einmal die ID mit zu übermitteln. Das PHP-Skript auf dem Apache-Server ließt diese Anmeldinformationen wieder aus und führt das Skript bzw. die Anwendung auf dem Server aus. Bei Apache gibt es diese Rechteprobleme nicht. Vielleicht hift diese Methode ja. Ach ja, Apache und IIS sollten auf verschiedenen Ports laufen.