unable to fork bei externem Programmaufruf

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • unable to fork bei externem Programmaufruf

    Hallo zusammen.

    Ich habe folgendes Problem:
    PHP-Code:
    /* Nun wird PTLkalender.exe mit den entsprechenden Parametern, die nötig sind, aufgerufen. */
    $cmd="PTLkalender.exe $TERMINE $pflichtversuche $INST $parameter";
    System(EscapeShellCmd($cmd)); 
    Diese 2 Zeilen arbeiten auf meinem Rechner einwandfrei, und auf dem eigentlichen Webserver, für den das gesamte Skript programmiert wurde, bekomme ich ein:
    Warning: Unable to fork [PTLkalender.exe 23 13 7 4 2 2 3 3 2 ] in D:\Web\Apache\htdocs\Lehre\Ptl\admin\ptlkalender.php on line 50

    Die Randbedingungen der beiden Systeme:
    Mein Rechner:
    - Duron 1200
    - Windows 2000 SP3
    Webserver:
    - Pentium 1 - 166
    - Windows NT 4.0 SP6

    beide Systeme laufen mit:
    - Apache 2.0.43
    - Php 4.2.3 als CGI
    - MySQL 3.23.38
    - SafeMode = Off
    - das Verzeichnis admin ist außerdem durch den Apache kennwortgeschützt

    Da auf dem Webserver aus Sicherheitsgründen alle AdministrationsTools wie cmd.exe, ping.exe, telnet.exe etc. in D:\AdminTools\Commands\ statt in C:\WinNT\ liegen, habe ich das Skript folgendermaßen geändert:
    PHP-Code:
    $cmd="D:\\AdminTools\\Commands\\cmd /c start /dD:\\Web\\Apache\\htdocs\\Lehre\\Ptl\admin\\ /WAIT /B PTLkalender.exe $TERMINE $pflichtversuche $INST $parameter";
    System(EscapeShellCmd($cmd)); 
    Dann habe ich es noch Variationen mit \\, \, / versucht. Jedoch erhalte ich immer noch ein:
    Warning: Unable to fork [D:\AdminTools\Commands\cmd /c start /dD:\Web\Apache\htdocs\Lehre\Ptl\admin\ /WAIT /B PTLkalender.exe 23 13 7 4 2 2 3 3 4 2 ] in D:\Web\Apache\htdocs\Lehre\Ptl\admin\ptlkalender.php on line 50

    Es half auch nicht, die Berechtigungen auf ganz D: für jeden auf RWX zu stellen. Allerdings klappt dieser Befehl: D:\AdminTools\Commands\cmd /c start /dD:\Web\Apache\htdocs\Lehre\Ptl\admin\ /WAIT /B PTLkalender.exe 23 13 7 4 2 2 3 3 4 2 unter Ausführen... auf dem Webserver

    Weiss jemand Rat?

  • #2
    Re: unable to fork bei externem Programmaufruf

    Original geschrieben von ]Ejecutor[
    Da auf dem Webserver aus Sicherheitsgründen alle AdministrationsTools wie cmd.exe, ping.exe, telnet.exe etc. in D:\AdminTools\Commands\ statt in C:\WinNT\ liegen,...
    Hier lag der Hund begraben:
    Da exec(), system(), passthru() ... shellgebunden sind und deshalb auf einen Kommandozeileninterpreter angewiesen sind, funktioniert natürlich nicht der Aufruf:
    exec("D:\AdminTools\Commands\cmd /c start .....");
    da ja dazu erstmal ein cmd bekannt sein muss, um diesem Pfad zu folgen.

    Abhilfe ist also cmd.exe mit auf den Webserver in das Verzeichnis kopieren. Oder wieder das System darauf zugreifen lassen (Systempfad anpassen bzw. ins Ursprungsverzeichnis zurückkopieren).

    Kommentar

    Lädt...
    X