/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Brug output fra DOS-program via PHP
Fra : Lasse Hedegaard


Dato : 13-08-03 21:08

Heps!

Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
DOS), som giver noget output som jeg gerne vil vide på et website.

Programmet skal kaldes via PHP/Apache med nogle parametre, og giver
derefter noget output som skal sendes retur og bruger på websitet.

Hvordan ordner jeg det? Serveren er Apache 2.0.47 med PHP 5.0.0b1 på
Windows XP (skal dog senere overføres til en ældre maskine, højst
sandsynligt med Windows 98). Serveren er kun tilgængelig fra en enkelt
maskine (min egen), så sikkerheden er ikke hamrende vigtig.

Men hvordan klarer jeg det?

X-post: dk.edb.internet.webdesign.serverside.php,
dk.edb.internet.software.apache
FUT: dk.edb.internet.webdesign.serverside.php

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock

 
 
Lars Dybdahl (13-08-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 13-08-03 21:14

Lasse Hedegaard wrote:
> Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
> DOS), som giver noget output som jeg gerne vil vide på et website.

Uha - det er jo netop et af de områder, hvor Linux/Unix plejer at være
ekstrem stærk i sammenligning med Microsoft teknologier. Umiddelbart kan du
kigge efter, om popen() virker på Windows. Det tror jeg ikke den gør - men
så kan du alternativt bruge php under http://www.cygwin.com/. Her skulle
det virke med popen().

Lars.

--
Freelance programmør
Programmering mod timebetaling

Lasse Hedegaard (13-08-2003)
Kommentar
Fra : Lasse Hedegaard


Dato : 13-08-03 21:18

Lars Dybdahl skrev:

>Uha - det er jo netop et af de områder, hvor Linux/Unix plejer at være
>ekstrem stærk i sammenligning med Microsoft teknologier.

Desværre findes programmet ikke til Linux, heller ikke kildekoden (så
ville jeg lave en udgave direkte i PHP).

>Umiddelbart kan du
>kigge efter, om popen() virker på Windows. Det tror jeg ikke den gør - men
>så kan du alternativt bruge php under http://www.cygwin.com/. Her skulle
>det virke med popen().

Jeg vil prøve Runes forslag først

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock

Ronson (13-08-2003)
Kommentar
Fra : Ronson


Dato : 13-08-03 21:18

> Programmet skal kaldes via PHP/Apache med nogle parametre, og giver
> derefter noget output som skal sendes retur og bruger på websitet.

Så er exec nok noget for dig
http://dk.php.net/manual/en/function.exec.php

--

Rune Duus
http://www.yier.dk
http://www.cocksucker.dk



Lasse Hedegaard (13-08-2003)
Kommentar
Fra : Lasse Hedegaard


Dato : 13-08-03 22:08

Ronson skrev:

>Så er exec nok noget for dig

Yup, virker fint. Jeg valgte nu system i stedet, da jeg ellers ikke
får sidste linie med (?)

Meeen...

Jeg skal ændre lidt i outputtet inden det sendes til browseren (det
skal jo se pænt ud). Følgende virker ikke, det sender stadig outputtet
afsted med det samme:

   $output = (system("hest.exe"));

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock

Bertel Lund Hansen (13-08-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 13-08-03 22:30

Lasse Hedegaard skrev:

>Jeg skal ændre lidt i outputtet inden det sendes til browseren (det
>skal jo se pænt ud). Følgende virker ikke, det sender stadig outputtet
>afsted med det samme:

Måske er det for meget omvej, men du kan altid sende outputtet
til en fil som du læser og retter i bagefter.

   ????? = (system("hest.exe>output.txt"));

(eller hvordan det nu skal skrives).

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

JMo. (13-08-2003)
Kommentar
Fra : JMo.


Dato : 13-08-03 22:31

Lasse Hedegaard <laxxe@nospam.dk> wrote in
news:9u9ljvcuqphk94927re5mg3iv35u105bn3@news.tele.dk:

> Jeg skal ændre lidt i outputtet inden det sendes til browseren (det
> skal jo se pænt ud). Følgende virker ikke, det sender stadig outputtet
> afsted med det samme:

Så brug noget output-buffering:

http://dk2.php.net/manual/en/ref.outcontrol.php

http://dk2.php.net/manual/en/function.ob-start.php
- før funktionen, og dernæst:
http://dk2.php.net/manual/en/function.ob-get-contents.php
- bagefter, for at smide det i en variabel.

Lasse Hedegaard (13-08-2003)
Kommentar
Fra : Lasse Hedegaard


Dato : 13-08-03 22:58

JMo. skrev:

>Så brug noget output-buffering

Synes jeg ikke at kunne få til at virke - outputtet kommer med det
samme alligevel - men det kan være jeg gør det forkert.

Prøv at se her:
http://fergusons.dk/temp/output.gif

Bagerst: Browseren
Notesblok: Kilden (fra browseren)
Lister: Scriptet

Hvordan får jeg de linier jeg kan se i kilden ind i et array. Hvis det
kan lade sig gøre, så skulle jeg kunne komme videre...

Jeg har prøvet med

   $array[] = ("time /?");

- det virker ikke... (jeg er nok træt).

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock

Morten Winkler Jørge~ (14-08-2003)
Kommentar
Fra : Morten Winkler Jørge~


Dato : 14-08-03 07:12

Lasse Hedegaard wrote:

> skal jo se pænt ud). Følgende virker ikke, det sender stadig outputtet
> afsted med det samme:
>
> $output = (system("hest.exe"));

Det er fordi system("hest.exe") bare sender output.fra hest.exe til stdout
for php (din webserver) mens exec returnerer dit hest.exe's output som en
streng.

Konklusion: Brug exec istedet og udtænk en måde at parse dit output på så du
kan formatere det pænt.


Morten

Anders K. Madsen (13-08-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 13-08-03 21:43

On Wed, 13 Aug 2003 22:13:44 +0200
Lars Dybdahl <lars@dybdahl.dk> wrote:

> Lasse Hedegaard wrote:
> > Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
> > DOS), som giver noget output som jeg gerne vil vide på et website.
>
> Uha - det er jo netop et af de områder, hvor Linux/Unix plejer at være
> ekstrem stærk i sammenligning med Microsoft teknologier. Umiddelbart kan du
> kigge efter, om popen() virker på Windows. Det tror jeg ikke den gør - men
> så kan du alternativt bruge php under http://www.cygwin.com/. Her skulle
> det virke med popen().
>

Ehrm, nu bruger jeg selv Linux, men jeg har lidt svært ved at se hvordan Linux
kan være "ekstrem stærk" m.h.t. eksekvering af programmer gennem PHP...
Og hvad i alverden skulle manden dog bruge cygwin til? Hvis hans program kun
kører i DOS, så er der jo ikke så meget ved at have PHP liggende i cygwin.

Mvh.
   Madsen


--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *

Anders K. Madsen (13-08-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 13-08-03 23:29

On Wed, 13 Aug 2003 23:58:00 +0200
Lasse Hedegaard <laxxe@nospam.dk> wrote:

> Hvordan får jeg de linier jeg kan se i kilden ind i et array. Hvis det
> kan lade sig gøre, så skulle jeg kunne komme videre...
>

Du kunne måske tænke dig at kigge lidt på shell_exec(), som returnerer _al_
output fra et script.
http://dk2.php.net/manual/en/function.shell-exec.php

Eks.
<?php
$output = shell_exec("time /?");

// Nu skulle $output gerne indeholde outputtet fra 'time /?'.

// Smid hver linje ind i et array.
// (Er DOS-newline ikke '\r\n'?
$array = explode("\r\n", $output);

print '<pre>';
print_r($array);
print '</pre>';
?>

Håber det kører. :)

Mvh.
   Madsen

--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *

Lasse Hedegaard (13-08-2003)
Kommentar
Fra : Lasse Hedegaard


Dato : 13-08-03 23:35

Anders K. Madsen skrev:

>Håber det kører. :)

Nu begynder det at ligne noget, men outputtet ser sådan ud (se
nederst)

(Det øverste og nederste er jo noget hø, hvor kommer det fra?)
I øvrigt, hvorfor kommer der ikke danske tegn med. Jeg har ikke brug
for det, men er blot nysgerrig.


OUTPUT:

Array
(
[0] => Viser eller definerer systemklokkesl‘ttet.

TIME [/T | tid]

Skriv TIME uden parametre for at vise det aktuelle systemklokkesl‘t og
f†
mulighed for at angive et nyt. Tryk p† Enter for at beholde
klokkesl‘ttet.

Hvis kommandoudvidelserne er aktiveret, underst›tter kommandoen
TIME parameteren /T, der fort‘ller kommandoen, at det aktuelle
klokkesl‘t skal v‘re output, uden at der skal sp›rges om et nyt
klokkesl‘t.

)

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock

Anders K. Madsen (13-08-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 13-08-03 23:40

On Thu, 14 Aug 2003 00:35:16 +0200
Lasse Hedegaard <laxxe@nospam.dk> wrote:

> Anders K. Madsen skrev:
>
> >Håber det kører. :)
>
> Nu begynder det at ligne noget, men outputtet ser sådan ud (se
> nederst)
>
> (Det øverste og nederste er jo noget hø, hvor kommer det fra?)
> I øvrigt, hvorfor kommer der ikke danske tegn med. Jeg har ikke brug
> for det, men er blot nysgerrig.
>

Hmm, prøv at erstatte "\r\n", med enten "\r" eller "\n" i explode().

Mvh.
   Madsen


--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *

Lasse Hedegaard (13-08-2003)
Kommentar
Fra : Lasse Hedegaard


Dato : 13-08-03 23:44

Anders K. Madsen skrev:

>Hmm, prøv at erstatte "\r\n", med enten "\r" eller "\n" i explode().

\n gjorde tricket - nu spiller det... (men jo, \r\n er da newline i
DOS så vidt jeg husker).

Tak for hjælpen!

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock

Peter Brodersen (14-08-2003)
Kommentar
Fra : Peter Brodersen


Dato : 14-08-03 00:23

On Wed, 13 Aug 2003 22:08:22 +0200, Lasse Hedegaard <laxxe@nospam.dk>
wrote:

>Programmet skal kaldes via PHP/Apache med nogle parametre, og giver
>derefter noget output som skal sendes retur og bruger på websitet.
>
>Hvordan ordner jeg det?

Du ordner det, som du ellers vil kalde eksterne programmer i PHP. Fx:

<?php
$data = `dir /w "c:\Program Files\Apache Group\Apache\conf"`;

print "<pre>";
print $data;
print "</pre>";
?>

Læs evt. manualen:
http://dk.php.net/manual/en/language.operators.execution.php
og
http://dk.php.net/manual/en/ref.exec.php

--
- Peter Brodersen

Ugens sprogtip: udmærket (og ikke udemærket)

Anders K. Madsen (14-08-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 14-08-03 00:37

On Thu, 14 Aug 2003 00:43:56 +0200
Lasse Hedegaard <laxxe@nospam.dk> wrote:

> Anders K. Madsen skrev:
>
> >Hmm, prøv at erstatte "\r\n", med enten "\r" eller "\n" i explode().
>
> \n gjorde tricket - nu spiller det... (men jo, \r\n er da newline i
> DOS så vidt jeg husker).
>
> Tak for hjælpen!
>

Det var så lidt.
Glad for jeg kunne hjælpe. :)

Mvh.
   Madsen

--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *

Søren Schimkat (14-08-2003)
Kommentar
Fra : Søren Schimkat


Dato : 14-08-03 06:59

Hej Lasse


"Lasse Hedegaard" <laxxe@nospam.dk> skrev i en meddelelse
news:fa6ljvc0aoukbde6essfpgo6jd9rnucsga@news.tele.dk...
> Heps!
>
> Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
> DOS), som giver noget output som jeg gerne vil vide på et website.
>
> Programmet skal kaldes via PHP/Apache med nogle parametre, og giver
> derefter noget output som skal sendes retur og bruger på websitet.
>
> Hvordan ordner jeg det?


<?
exec ("program-name params", $output);
print $output;
?>


mvh Søren


www.serverforum.dk - her får du svar med garanti


> Serveren er Apache 2.0.47 med PHP 5.0.0b1 på
> Windows XP (skal dog senere overføres til en ældre maskine, højst
> sandsynligt med Windows 98). Serveren er kun tilgængelig fra en enkelt
> maskine (min egen), så sikkerheden er ikke hamrende vigtig.
>
> Men hvordan klarer jeg det?
>
> X-post: dk.edb.internet.webdesign.serverside.php,
> dk.edb.internet.software.apache
> FUT: dk.edb.internet.webdesign.serverside.php
>
> Venligst,
> Lasse Hedegaard
>
> --
> http://www.simlock.dk/ - låsesmeden til din simlock



Søg
Reklame
Statistik
Spørgsmål : 177518
Tips : 31968
Nyheder : 719565
Indlæg : 6408647
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste