.exe auf WIN-XP Server mit php starten

Alles, was PHP betrifft, kann hier besprochen werden.

.exe auf WIN-XP Server mit php starten

Postby codeman2001 » 27. August 2010 08:27

Hallo,
ich möchte eine ausführbare (.exe) Datei, welche sich auf meinem Win-XP Web-Server befindet über php starten.
Dabei brauche ich Hilfe. Bis jetzt habe ich schon einige Zeit gegoogelt und auch hier die Boardsuche benutzt und bin auf folgendes gestoßen:

Code: Select all
<html>
<head>
 <title>Programme auf dem Server starten</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">

<?

  $pfad = "C:/Pfad/"; // Backslashes durch slashes ersetzen, muss mit slash abschließen
  $dateiname = "tskill";
  $parameter = "";
 
  function startexe($path, $exe, $args = "")
  {
    global $conf;
 
    if (file_exists($path . $exe))
    {
      chdir($path);
      if (substr(php_uname(), 0, 7) == "Windows")
      {
        pclose(popen("start \"bla\" \"" . $exe . "\" " . escapeshellarg($args), "r"));
      }
      else
      {
        exec("./" . $exe . " " . escapeshellarg($args) . " > /dev/null &");
      }
    }
  }
 
  startexe ($pfad, $dateinahme, $parameter);
 
?>

</body>
</html>


ich denke mal, dass wird noch nciht passen. kann mir einer genau sagen, wie ich das ganze aufzubauen habe? bis zum substring ist alles klar, aber dann steige ich aus...

danke für die antworten ;)
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Re: .exe auf WIN-XP Server mit php starten

Postby Nobbie » 27. August 2010 10:09

codeman2001 wrote:ich möchte eine ausführbare (.exe) Datei, welche sich auf meinem Win-XP Web-Server befindet über php starten.


Das macht man einfach mit der exec()-Funktion, oder mit system() oder irgendeiner der anderen vielen PHP Funktionen, die das ermöglichen. Da braucht man sonst nichts. Doku findest Du unter http://www.php.net bzw. genauer unter http://de.php.net/manual/de/book.exec.php
Nobbie
 
Posts: 6577
Joined: 09. March 2008 13:04

Re: .exe auf WIN-XP Server mit php starten

Postby codeman2001 » 27. August 2010 10:28

hallo,
habe jetzt folgendes in der test.php

Code: Select all
<?php
  $pfad = "C:/Pfad/"; // Backslashes durch slashes ersetzen, muss mit slash abschließen
  $dateiname = "dateiname_ohnedateiendung";
  $parameter = "";

    global $conf;
 
    if (file_exists($path . $exe))
    {
      chdir($path);
      exec("./" . $exe . " " . escapeshellarg($args) . " > /dev/null &");
    }
?>


die test.php wird von der index.htm aufgerufen
Code: Select all
<html>
<head>
 <title>Programme auf dem Server starten</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">

<form action="test.php" method ="post">
 <input type="submit" name="startexe" value=".exe starten">
</form>
</body>
</html>


kann das mal einer testen?
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Re: .exe auf WIN-XP Server mit php starten

Postby Nobbie » 27. August 2010 10:51

codeman2001 wrote:kann das mal einer testen?


Da gibt es nichts zu testen - da stehen alle möglichen "Platzhalter" drin und kein konkreter Programmname. Außerdem was nutzt das - Du willst doch bei Dir ein Programm starten. Wozu benutzt Du überhaupt ein Formular? Die PHP Datei kannst Du doch direkt im Browser aufrufen.

Außerdem ist das Script total kaputt, da werden andauernd neue Variablen benutzt ohne sie vorher mit irgendwelchen Werten zu bestücken.
Nobbie
 
Posts: 6577
Joined: 09. March 2008 13:04

Re: .exe auf WIN-XP Server mit php starten

Postby codeman2001 » 27. August 2010 10:57

Nobbie wrote:
codeman2001 wrote:kann das mal einer testen?


Da gibt es nichts zu testen - da stehen alle möglichen "Platzhalter" drin und kein konkreter Programmname. Außerdem was nutzt das - Du willst doch bei Dir ein Programm starten. Wozu benutzt Du überhaupt ein Formular? Die PHP Datei kannst Du doch direkt im Browser aufrufen.

Außerdem ist das Script total kaputt, da werden andauernd neue Variablen benutzt ohne sie vorher mit irgendwelchen Werten zu bestücken.


man kann doch irgendeine .exe datei nehmen, diese versuchen zu starten.
nur die $conf wird nicht gefüllt.

es wird noch mehrere button für verschiedene dateien geben..., deshalb der button ;)

kann es zur zeit auf meinem server nicht testen, weil ich nicht zu hause bin und vnc geblockt wird...

der test dürfte doch nicht lange dauern, oder?
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Re: .exe auf WIN-XP Server mit php starten

Postby Nobbie » 27. August 2010 11:08

codeman2001 wrote:man kann doch irgendeine .exe datei nehmen, diese versuchen zu starten.


Das kann man, ja, aber nicht mit Deinem Script. Das ist so falsch, da reicht es nicht, wenn die Platzhalter durch Programmnamen ersetzt. Da kann man gleich ein eigenes Script nehmen - und dann ist es doch total sinnlos.

codeman2001 wrote:nur die $conf wird nicht gefüllt.


Natürlich nicht - die $conf hat keinen Wert und bekommt auch keinen zugewiesen in diesem Script..

codeman2001 wrote:der test dürfte doch nicht lange dauern, oder?


Was soll man damit testen? Ob die Fehlerausgabe in PHP richtig bemerkt, dass $path unbekannt und dennoch benutzt wird, dass $exe unbekannt ist aber benutzt wird - was soll das bringen?

Sag doch einfach wie es ist: "ich habe NULL Ahnung von PHP und möchte aber das Programm blablabl.exe aufrufen, wie geht das?"
Nobbie
 
Posts: 6577
Joined: 09. March 2008 13:04

Re: .exe auf WIN-XP Server mit php starten

Postby codeman2001 » 27. August 2010 11:42

Nobbie wrote:
codeman2001 wrote:man kann doch irgendeine .exe datei nehmen, diese versuchen zu starten.


Das kann man, ja, aber nicht mit Deinem Script. Das ist so falsch, da reicht es nicht, wenn die Platzhalter durch Programmnamen ersetzt. Da kann man gleich ein eigenes Script nehmen - und dann ist es doch total sinnlos.

codeman2001 wrote:nur die $conf wird nicht gefüllt.


Natürlich nicht - die $conf hat keinen Wert und bekommt auch keinen zugewiesen in diesem Script..

codeman2001 wrote:der test dürfte doch nicht lange dauern, oder?


Was soll man damit testen? Ob die Fehlerausgabe in PHP richtig bemerkt, dass $path unbekannt und dennoch benutzt wird, dass $exe unbekannt ist aber benutzt wird - was soll das bringen?

Sag doch einfach wie es ist: "ich habe NULL Ahnung von PHP und möchte aber das Programm blablabl.exe aufrufen, wie geht das?"


die variablen werden doch erstellt und durch die füllung entsprechend angelegt. laos als string
die frage ist doch nur, ob die funktion exec(...) richtig genutzt wird?
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Re: .exe auf WIN-XP Server mit php starten

Postby Nobbie » 27. August 2010 12:21

codeman2001 wrote:die variablen werden doch erstellt und durch die füllung entsprechend angelegt. laos als string


Wo wie wann werden die Variablen "erstellt" und welche "Füllung" legt sie an?

codeman2001 wrote:die frage ist doch nur, ob die funktion exec(...) richtig genutzt wird?


Wenn die Variablen, die an die Funktion exec() übergeben werden (die aber momentan keinen Inhalt und keinen Sinn haben), einen sinnvollen und richtigen Inhalt haben, dann wird die Funktion exec() syntaktisch richtig aufgerufen. Wenn. Haben sie aber nicht.
Nobbie
 
Posts: 6577
Joined: 09. March 2008 13:04

Re: .exe auf WIN-XP Server mit php starten

Postby codeman2001 » 27. August 2010 12:40

arg, sorry!!! nicht gesehen...! so sollte es sein

Code: Select all
<?php

  $pfad = "C:/Pfad/"; // Backslashes durch slashes ersetzen, muss mit slash abschließen
  $dateiname = "dateiname_ohne_endung";
  $parameter = "";

  if (file_exists($pfad . $dateiname))
  {
    chdir($pfad);
      exec("./" . $dateiname . " " . escapeshellarg($parameter) . " > /dev/null &");
  }
?>


wfür ist das
Code: Select all
> /dev/null &



edit: brauche ja den ganzen überprüfungskram nicht. habe beim googeln nopch was gefunden, aber welche Version ist richtig?

1. exec("C:\\ordner\\test.exe");
2. exec("C:/ordner/test.exe");
3. exec("c:\ordner\test.exe");
4. exec('"C:\ordner\test.exe"', $report);
5. exec('test.exe', $report);

kann es z.Z. leider nicht testen

gruß
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Re: .exe auf WIN-XP Server mit php starten

Postby Nobbie » 27. August 2010 13:40

codeman2001 wrote:wfür ist das
Code: Select all
> /dev/null &


Das lenkt (nur unter Linux, NICHT unter Windows) eine evtl. Ausgabe (irgendwelche Texte) eines Programms um, so daß sie einfach nicht erscheinen.

codeman2001 wrote:1. exec("C:\\ordner\\test.exe");
2. exec("C:/ordner/test.exe");
3. exec("c:\ordner\test.exe");
4. exec('"C:\ordner\test.exe"', $report);
5. exec('test.exe', $report);


Mehrere Versionen sind "richtig", eindeutig falsch ist Version 3 und 4, weil ein Backslash "\" in Gänsefüsschen (auch DoubleQuotes genannt) eine Sonderbedeutung haben und dann (wie im Beispiel 1) doppelt geschrieben müssen. Alternativ kann man auch den normalen einfachen Slash "/" nehmen, den versteht Windows ebenfalls.

Der 2. Parameter $report ist ein sog. "optionaler" Parameter, den braucht man nicht anzugeben, wenn man es aber tut, steht nachher die Ausgabe des Programms als Array darin. Das steht aber auch sehr gut in der Doku beschrieben, die ich Dir extra verlinkt habe und die Du unbedingt lesen solltest.

codeman2001 wrote:kann es z.Z. leider nicht testen


Dann machen wir mal eine längere Pause, bis Du es testen kannst. Da kommst Du sowieso nicht drumherum und einfach so ins Blaue hinein hat das überhaupt keinen Sinn. Installiere Dir mal Xampp auf Deinem Rechner und dann testest Du selbst, nur so lernst Du es auch.
Nobbie
 
Posts: 6577
Joined: 09. March 2008 13:04

Re: .exe auf WIN-XP Server mit php starten

Postby codeman2001 » 29. August 2010 19:37

hi,
habe das ganze jetzt mal getestet. aber funktioniert nicht.

index.htm
Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title>FMS Funk Server</title>
  </head>
  <body>
 
  <form action="test.php" method ="post">
    <input type="submit" name="start" value="start">
  </form>

  </body>
</html>


test.php
Code: Select all
<?php

  $pfad = "D:/ordner/";
  $dateiname = "test.exe";
  $parameter = "";

  if (file_exists($pfad . $dateiname))
  {
    echo "Pfad ist korrekt <br />";
    chdir($pfad);
    exec("./" . $dateiname . " " . escapeshellarg($parameter) . "", $report);
    //exec("D:/ordner/test.exe");
    echo $report;
  }
?>


wenn ich jetzt auch fen button klicke kommt folgendes:

Code: Select all
Pfad ist korrekt
Array


Das heisst ja, das die Pfadangabe schon einmal richtig ist. Die auskommentierte Variante habe ich auch ausprobiert. Dann lädt er und lädt und lädt...

Was hat das mit dem Array auf sich?
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Re: .exe auf WIN-XP Server mit php starten

Postby Nobbie » 29. August 2010 20:50

codeman2001 wrote:Was hat das mit dem Array auf sich?


Was soll das auf sich haben? Ein Array ist ein Array.
Nobbie
 
Posts: 6577
Joined: 09. March 2008 13:04

Re: .exe auf WIN-XP Server mit php starten

Postby codeman2001 » 29. August 2010 21:53

achne :D
soltle er nicht eigentlich eine Meldung zurückgeben, ob die Anweisung ausgeführt wurde oder nicht?
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Re: .exe auf WIN-XP Server mit php starten

Postby Nobbie » 29. August 2010 22:15

Kommt drauf an - sicherlich nicht mit Deinem Programmcode. In der Doku ist das mit Sicherheit anders beschrieben.
Nobbie
 
Posts: 6577
Joined: 09. March 2008 13:04

Re: .exe auf WIN-XP Server mit php starten

Postby codeman2001 » 29. August 2010 22:36

Ist ja nett, dass du antwortest, aber ne große hilfe sind deine beiträge nicht grade. Wäre schön, wenn du dich mal ein bisschen konkreter ausdrücken könntest... Danke ;)
codeman2001
 
Posts: 8
Joined: 27. August 2010 08:17

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 7 guests