[PHP] exec command vraag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben nu al dagen op zoek naar een bruikbaar voorbeeld waarmee ik het volgende kan:

Op mijn website wil ik de mogelijkheid hebben om een *.exe file te executen.
Nu heb ik het volgende script gebruikt om te kijken of de file ook de rechten heeft:

<?php

$file = 'filename.exe';

if (is_executable($file)) {
echo $file.' is executable';
} else {
echo $file.' is not executable';
}

?>

Met de rechten zit het goed, echter nu nog de file via je browser kunnen executen.
Via php.net las ik dat er meerdere mogelijkheden zijn, echter voorbeelden waaraan ik iets heb ontbreekt. Uren googlen later kom ik tot de conclusie dat het misschien niet mogelijk is wat ik wil.

Nu ben ik alles behalve een expert in PHP, kan iemand mij misschien een stapje vooruit helpen?
Of een voorbeeld hier posten die ik kan verbouwen?

Naar dagen frustratie is dit m'n laatste optie :)

help! (please ;))

Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 20:47
http://nl2.php.net/manual/en/function.exec.php
http://nl2.php.net/manual/en/function.system.php

Alles serverside natuurlijk, je bent wat onduidelijk, hoop dat je niet stiekem een clientside .exe wilt starten.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

dajappie schreef op dinsdag 22 februari 2005 @ 13:46:
Hoop dat je niet stiekem een clientside .exe wilt starten.
Van mij mag hij dat best willen; ik ben daarentegen blij dat dat gewoon niet mogelijk is. :)

Als je wat wil executen op de client, dan zul je moeten kijken of het met een clientside applicatie kan, maar ook daar moeten bij de client de goede rechten voor ingesteld worden. Voor een intranet is dat best mogelijk, op het internet heb je er niets aan.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
thx voor de snelle reply!

Echter die urls heb ik natuurlijk al 1000x doorgelezen.
PHP.net kan mij niet echt verder helpen, omdat er geen voorbeelden opstaan die bruikbaar zijn voor mij.

Ik ben misschien niet helemaal duidelijk, kun je misschien speciferen welke info je van me nodig hebt om het duidelijker te maken?

De file die ik wil executen staat op de server, ik wil het via m'n browser kunnen executen.

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Lees nou maar gewoon de PHP website. Je wilt een file executen. Nou, exec('/patch/naar/file');
Ik begrijp niet wat hier moeilijk aan kan zijn hoor :?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Wat heb je geprobeerd om dat bestand uitgevoerd te krijgen? Ik kan me namelijk moeilijk voorstellen wat er, na het lezen van bovenstaande links, niet zou lukken. Aan exec('filename.exe'); kun je imho weinig fout doen toch?

ik mis de 'wat wil ik'','wat heb ik geprobeert', 'wat kwam daaruit' en de 'waarom dit verschilt met wat ik wil'.

[ Voor 21% gewijzigd door Janoz op 22-02-2005 14:16 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 20:47
Verwijderd schreef op dinsdag 22 februari 2005 @ 13:52:
Ik ben misschien niet helemaal duidelijk, kun je misschien speciferen welke info je van me nodig hebt om het duidelijker te maken?
Want je wil de output van die .exe volledig tonen in je browser en er zo mee kunnen werken? Bv. excel.exe en dat je dan Excel in je browser ziet? PHP doet alleen uitvoeren op het systeem zelf en indien gewenst de laatste regel (tekst-)output van het programma teruggeven aan je script.

PHP:
1
2
3
<?php
$last_line = system("c:\temp\mijnbestand.exe", $retval);
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
<?php

exec('/patch/to/file');

?>


Ik dacht ook dat het zo zou moeten werken.. Dat is namelijk erg logisch (zou je denken)..

Echter, het doet niks! m'n browser begint te laden, en te laden, en en en... niks!

m'n apache error log vertelt me verder ook helemaal niks..

Ik had als test op m'n local server een file test.php gegooit met notepad.exe in dezelfde map.
Code in test.php:
<?php

exec('notepad.exe');

?>

Dat doet dus helemaal niks, ik heb het ook zonder .exe geprobeerd, zelfde verhaal.
Als Apache nu eens vertelde wat er dan niet goed is...

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Dat je browser door blijft laden komt waarschijnlijk omdat je script wacht totdat het programma klaar is, en zolang je notpad nog niet afgesloten hebt is notepad nog niet klaar. Verder hoeft notepad niet op jou scherm terecht te komen. Kijk eens, zodra je het request gedaan hebt welke processen er allemaal op de server draaien en van wie ze zijn. Neem maar van mij aan dat daar een notepad.exe tussen staat en dat, zodra deze afgesloten is, je broser ook stopt met laden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Op php.net lees ik dat de webserver als service draaid in een win32 omgegeving en mag niet communiceren met de desktop. In de comments staat er het een en ander er over. (kijken bij het commentaar van "dotpointer").

[ Voor 15% gewijzigd door Sybr_E-N op 22-02-2005 14:30 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz je hebt gelijk!

shit ik voel me nu erg groen achter de oortjes..
Dit had ik natuurlijk ook zelf kunnen bedenken.

Nu heb ik het werkend op m'n local, echter nog niet op m'n webserver.
Is het mogelijk om een stukje webmaster code toe te voegen zodat ik kan zien wat er fout gaat?

Zoiets als dit:

if ($webmaster == 1)
{
echo "<pre>";
print_r ($_GET);
echo "session url: ", $sess_id, "<br>";
echo "</pre>";
}


Maar dan voor dit stukje

super bedankt trouwens allemaal!

Acties:
  • 0 Henk 'm!

Verwijderd

dajappie schreef op dinsdag 22 februari 2005 @ 14:16:
[...]
PHP:
1
2
3
<?php
$last_line = system("c:\temp\mijnbestand.exe", $retval);
?>
`\' (backslash) is natuurlijk het escape character, dus dit werkt niet, gebruik:

PHP:
1
2
3
exec("c:\\temp\\mijnbestand.exe", $output, $retval);
of
exec("c:/temp/mijnbestand.exe", $output, $retval);


Als safe_mode aanstaat dan zijn exec() en soortgelijke uitgeschakeld, probeer error_reporting eens aan te zetten of in de php error log te kijken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
server staat niet in safe mode, apache error log vertelt helemaal niks..

verder krijg ik het niet voor elkaar om op de een of andere manier info te krijgen over wat er nu fout gaat. Ook op server heeft de file execution rights.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmm, een apache restart did the trick!

raar maar waar..

Topic kan op slot.

Bedankt voor de hulp allen (ook al was het uiteindelijk erg makkelijk)
Pagina: 1