unable to fork bei externem Programmaufruf

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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).

    Comment

    Working...
    X