Wizard: exec() funktioniert nicht

Moin,

wenn ich im DOS Fenster diesen Befehl absetzte:
convert mike.tif mike.jpg
dann funktioniert das einwandfrei.

Nun möchte ich diesen Befehl aus PHP aufrufen.

<?
exec ("convert mike.tif mike.jpg");
?>

Wenn ich dieses PHP ausführe, dann rödelt der Browser endlos rum,
und es passiert gar nix.

WIN2000 und ISS 5

Die convert.exe liegt sowohl im WEBroot als auch auf dem Client.

Übrigends habe ich mal das getestet.
<?
exec ("C:/winnt/notepad.exe");
?>

Mit dem gleichen Ergebnis ( gar keines )

Und auch das funtzt nicht:
exec("start ......");

Hat jemend ne Idee?

regds
Wiz

  1. Hi,

    eine Idee vielleicht nicht, aber eine Vermutung:
    exec() führt in jedem Fall ein Programm auf dem Server aus, kann dadurch auf keinen Fall irgendwelche Fenster oder sonst etwas aufmachen.
    Wie das bei so einem convert-Befehl ist weiß ich nicht genau, aber es könnte sein, dass dein Skript keine Ausführungsrechte für derartige externe Programme besitzt - Wie und ob man das hinbekommt weiß ich allerdings nicht

    1. Moin,

      exec() führt in jedem Fall ein Programm auf dem Server aus, kann

      Gut zu wissen.

      keine Ausführungsrechte für derartige externe Programme besitzt -

      Ich habe auf dem Server kurzfristig "ausführen" zugelassen, aber
      das Ergebnis ist leider das gleiche wie vorher.

      regds
      Wiz

      1. Moin,

        exec() führt in jedem Fall ein Programm auf dem Server aus, kann

        Gut zu wissen.

        Wenn Du das nicht weißt solltest Du vielleicht erstmal http://www.php3.de/manual/de/function.exec.php lesen!

        Alles was Du in PHP machst wird ausschließlich serverseitig ausgeführt! Clientdseitig wäre z.B. Javascript.

        keine Ausführungsrechte für derartige externe Programme besitzt -

        Ich habe auf dem Server kurzfristig "ausführen" zugelassen, aber
        das Ergebnis ist leider das gleiche wie vorher.

        Was willst Du überheupt erreichen? Du willst Bilder auf dem Server konvertieren, richtig?
        PHP hat mit dem Document-root des Apachen erstmal nichts zu tun! Damit convert funktioniert muß das im Winnt/system32 ordner liegen.

        Ich würde Dir zum Testen mal lieber system() empfehlen(http://www.php3.de/manual/de/function.system.php), denn system gibt die Ausgabe der Kommandozeile zurück, also kannst Du sehen ob ein Fehler aufgetreten ist, einfach mit

        system("convert...");

        Grüße
        Andreas

        1. Moin,

          Was willst Du überheupt erreichen? Du willst Bilder auf dem Server konvertieren, richtig?
          PHP hat mit dem Document-root des Apachen erstmal nichts zu tun! Damit convert funktioniert muß das im Winnt/system32 ordner liegen.

          Ich möchte ein TIF in ein JPG umwandeln, damit es der Browser
          anzeigen kann. Das TIF wird als Ergebnis einer Datenbankabfrage
          geliefert.
          BTW: Bei mir läuft kein Apache sondern IIS

          system("convert...");

          Habe ich versucht. Gleiches Ergebnis. ( Gar nichts, der Browser rödelt nur )

          regds
          Wiz

          1. Moin,

            Was willst Du überheupt erreichen? Du willst Bilder auf dem Server konvertieren, richtig?
            PHP hat mit dem Document-root des Apachen erstmal nichts zu tun! Damit convert funktioniert muß das im Winnt/system32 ordner liegen.

            Ich möchte ein TIF in ein JPG umwandeln, damit es der Browser
            anzeigen kann. Das TIF wird als Ergebnis einer Datenbankabfrage
            geliefert.
            BTW: Bei mir läuft kein Apache sondern IIS

            system("convert...");

            Habe ich versucht. Gleiches Ergebnis. ( Gar nichts, der Browser rödelt nur )

            versuchs mal mit http://www.php3.de/manual/de/function.passthru.php

            Hast Du die convert.exe im Windows-System Ordner`

            Ach ja, du solltest hierbei abslute Pfade(C:/bla/bla/bild.gif) angeben!

            und wenn das nicht geht, probiere mal die Ausgabe mit > in eine Datei umzuleiten, mußt Du mal bei convert -h gucken welche Parameter Du da angeben kannst, vieleicht verbose, um mehr infos zu erhalten, und wenn das auch nicht gibt mal mit 2> die Ausgabe der Fehler in eine Datei umleiten. Und vielleicht probierst Du es mal mit einem anderen Befehl, also sowas wie "tracert www.web.de"!

            Grüße
            Andreas

  2. Hi

    wenn ich im DOS Fenster diesen Befehl absetzte:
    convert mike.tif mike.jpg
    dann funktioniert das einwandfrei.

    Nun möchte ich diesen Befehl aus PHP aufrufen.

    <?
    exec ("convert mike.tif mike.jpg");
    ?>

    Beim Aufruf im DOS Fenster ist das aktuelle Verzeichnis vielleicht ein anderes. Oder "convert" ist nicht richtig im PATH eingetragen.

    Wenn ich dieses PHP ausführe, dann rödelt der Browser endlos rum,
    und es passiert gar nix.

    WIN2000 und ISS 5

    Die convert.exe liegt sowohl im WEBroot als auch auf dem Client.

    Übrigends habe ich mal das getestet.
    <?
    exec ("C:/winnt/notepad.exe");

    Unter DOS ist \ der Trenner zwischen Verzeichnissen...

    ?>

    Andreas

    1. Moin,

      Beim Aufruf im DOS Fenster ist das aktuelle Verzeichnis vielleicht ein anderes. Oder "convert" ist nicht richtig im PATH eingetragen.

      Ich habe im PHP script auch schon alle Pfade absolut gesetzt, sowohl
      für das Proggie convert.exe, als auch für die Bilder.

      Unter DOS ist \ der Trenner zwischen Verzeichnissen...

      Das hatte ich auch bereits in PHP maskiert mit \

      regds
      Wiz

  3. Moin,

    wenn ich im DOS Fenster diesen Befehl absetzte:
    convert mike.tif mike.jpg
    dann funktioniert das einwandfrei.

    ... und gibt was nach stdout bzw. stderr (sprich in das DOS-Fenster) aus?

    Nun möchte ich diesen Befehl aus PHP aufrufen.

    <?
    exec ("convert mike.tif mike.jpg");
    ?>

    Wenn ich dieses PHP ausführe, dann rödelt der Browser endlos rum,
    und es passiert gar nix.

    ... wahrscheinlich, weil deine convert.exe nicht weiß, wohin mit ihren Ausgaben. Probier mal:
    exec ("convert mike.tif mike.jpg > null");
    oder lies bei:
    http://www.php.net/manual/de/function.exec.php,
    wie man die Ausgaben in ein Array holt.

    WIN2000 und ISS 5

    Die convert.exe liegt sowohl im WEBroot als auch auf dem Client.

    Übrigends habe ich mal das getestet.
    <?
    exec ("C:/winnt/notepad.exe");
    ?>

    ... das wird nie gehen, weil PHP (hoffentlich) keine Anwendungen mit GUI starten darf. Wozu auch? Wer soll was in den Editor eingeben?

    Gruß

    Axel

    1. Moin,

      ... und gibt was nach stdout bzw. stderr (sprich in das DOS-Fenster) aus?

      Es gibt im DOS Fentser keine Ausgabe, da das convert Programm das
      TIF File in ein JPG File umgewandelt hat ( Anstandslos )

      Nun möchte ich diesen Befehl aus PHP aufrufen.

      ... wahrscheinlich, weil deine convert.exe nicht weiß, wohin mit ihren Ausgaben. Probier mal:

      Es gibt keine Ausgabe als solches, das Ergebnis ist lediglich ein
      neues Image im JPG format.

      Übrigends habe ich mal das getestet.
      <?
      exec ("C:/winnt/notepad.exe");
      ?>
      ... das wird nie gehen, weil PHP (hoffentlich) keine Anwendungen mit GUI starten darf. Wozu auch? Wer soll was in den Editor eingeben?

      Das war nur zu Test Zwecken, inzwischen weis ich, das das gar nicht
      funktionieren kann.

      regds
      Mike