php crasht nach exec befehl

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

  • php crasht nach exec befehl

    Hallo! Ich hab da ein recht unverstaendliches Problem:
    Ich will über php eine exe starten, die aus *.ttf dateien *.afm Dateien bildet (Die brauche ich um True Type Schriftarten in FPDF-Scripten zu verwenden zur programmierung von PDF-Dokumenten).
    Das Script führt sowohl einen ping befehl korrekt aus, als auch die verwendete ttf2pt1.exe, diese aber nur wenn sie ohne parameter aufgerufen wird. Wenn ich die ttf2pt1.exe jedoch über eine shell mit den gleichen Parametern starte funktioniert alles, nur beim aufruf über php crasht das Programm und das php-modul. (ohne Fehlermeldung, es passiert einfach nix mehr, apache restart notwendig). Die zu erzeugenden Dateien sind allerdings da, leider nur mit 0 Byte größe.

    Der Server verwendet eine relativ neue WAMP installation, ca 3Monate alt.

    Hier mein script:

    <?php
    include("makefont.php");

    if(isset($HTTP_POST_VARS))foreach($HTTP_POST_VARS as $vname => $vwert) $$vname=$vwert;
    if(isset($HTTP_GET_VARS)) foreach($HTTP_GET_VARS as $vname => $vwert) $$vname=$vwert;

    //$ttf ist der Name der True-Type Schrift incl. Pfad

    if((isset($ttf)))
    {
    //filtern des reinen dateinamens:
    $datname=(substr($ttf,strrpos($ttf,'/')+1,strrpos($ttf,'.')-strrpos($ttf,'/')-1));
    $afm=$datname.'.afm';
    print $datname."<br>";
    $arr=array();
    $stat=0;

    // $prg='ping 192.168.20.43';
    // $prg="ttf2pt1.exe";
    //Die beiden oberen funktionieren nur der folgende nicht:
    $prg="ttf2pt2.exe -A ".$ttf." ".$datname;
    print $prg."<br>";

    exec($prg,$arr,$stat);

    print "<br>fertsch<br>";
    flush();
    $i=0;
    while(isset($arr[++$i]))
    {
    print $arr[$i]."<br>";
    }
    print $stat."<br>";
    flush();

    if($stat==0)
    {
    MakeFont($ttf,$afm,'cp1252');
    }
    }
    ?>

    Wie gesagt, bei eingabe des Befehls in eine Shell im gleichen Directory wo die php liegt, funktioniert alles bestens.

  • #2
    bei Windows muss es doch eigentlich nicht / sondern \ im Pfad heissen

    Kommentar


    • #3
      der server läuft mit Win NT, da isses egal welche schreibweise

      Kommentar


      • #4
        darf der PHP-User denn das Programm ausführen (Rechte)?
        Hast du schon mal mit system() oder passthru() getestet?

        Kommentar


        • #5
          Jo an Rechten liegt es nicht und diverse andere Befehle (system() passthru() und Backtick-Operator) hab ich schon getestet, alles ohne Erfolg. Ich glaube langsam das es an der exe liegt. Kann es sein das sie bei aufruf über php anderen Speicher zugewiesen kommt und damit net klar kommt?

          Kommentar


          • #6
            gibt's du überhaupt den kompletten Pfad zur .exe an?

            Naja, aber das sind eigentlich auch alles nur Vermutungen, die den Apache nicht killen dürften.

            Kommentar

            Lädt...
            X