eddi: exec() unter WinDOSen und Linuxen

Beitrag lesen

Hallo,

Stellt mir exec() eine Shell zur Verfügung, oder nicht?

für Linux werden nur die eingegebenen Parameter geprüft, der Status des Safe Mode abgefragt und dann wird popen() <stdio.h> ausgeführt.
Für Windows wird auf eine Funktion CreateProcess() zurückgegriffen, die aber nicht in den Sourcen definiert wird. (Vielleicht sagt Dir das was.)

Wenn ich auf Win98SE die Sache wie folgt aufbaue, klappt alles ohne zu Mucken. Lasse ich die Extra-Shell (command.com) weg, dann wird augenscheinlich nach dem Befehlsinterpreter gesucht, und zwar in der Bootreihenfolge des Systems (hier: Disklaufwerk, CDROM, Festplatte)

Das hört sich für mich nach einer Konfigurationssache (PATH) der Umgebungsvariablen an, die die einzelnen Webserver auf den verschiedenen Maschinen setzen sollten.

  1. Wie kann ich das OS feststellen, auf dem die Sache läuft?

Mit php_uname()

  1. Kann ich für den Befehlsinterpreter auf eine Systemvariable zurückgreifen, oder ihn anders ermitteln?

Da würde ich das Script so einstellen, daß es per Erstaufruf $_ENV['PATH'] parst und mit einem Datenfeld an möglichen Interpreternamen sich auf die Suchen macht, bis es einen Interpreter gefunden hat. Die genau Pfadangabe zum Interpreter hinterlegt sich das Script in einem kleinen Konfigurationsfile und greift fortan darauf zurück.

Gruß aus Berlin!
eddi