[PHP] PHP exec + IIS 6

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mathijs92
  • Registratie: December 2007
  • Laatst online: 16-09 20:34
Er draait hier een windows server 2003 met IIS 6 erop, PHP is als ISAPI extensie geinstalleerd en werkt normaal. In PHP heb ik een script gemaakt dat automatisch een MySQL database update, dit script wordt aangeroepen door de server, het script heeftongeveer 67 secondes nodig om uit te voeren, nadat het script is uitgevoert moet de webpagina automatisch gesloten worden, dat heb ik met exec en shell_exec geprobeerd met de volgende commando's:
PHP:
1
2
3
4
5
6
$command = "kill.bat"; 
$command = "E:\\PATH\\kill.bat"; 
$command = "E:\PATH\kill.bat"; 
$command = "C:\\WINDOWS\\system32\\cmd.exe /c E:\\PATH\\kill.bat";
$command = "C:\WINDOWS\system32\cmd.exe /c E:\PATH\kill.bat"; 
$command = "C:\\WINDOWS\\system32\\taskkill.exe /F /IM iexplore.exe";

kill.bat
code:
1
TASKKILL /F /IM iexplore.exe


dit heb ik allemaal geprobeerd in exec en shell_exec, IUSR_<SERVER> heeft toegang tot het batchbestand, cmd en taskkill (read +execute).

Wie weet waar dit aan kan liggen?

[ Voor 3% gewijzigd door mathijs92 op 10-07-2008 10:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Kan je het dan niet gewoon beter via CLI aanroepen?

Acties:
  • 0 Henk 'm!

  • mathijs92
  • Registratie: December 2007
  • Laatst online: 16-09 20:34
Met de CGI extensie is het gelukt, bedankt. Ik heb nou de volgende code gebruikt:
PHP:
1
2
$command ="kill.bat";
shell_exec($command);

Nou heb ik nog 1 vraagje, ik wil dat het script een x aantal seconde wacht, en dan afsluit, maar als ik sleep(5); voor shell_exec() zet, wacht het script 5 seconde tijdens het laden van de pagina, terwijl de code helemaal onderaan staat

PHP:
1
2
3
4
5
// Hier staat al mijn code + echo's

sleep(5);
$command ="kill.bat";
shell_exec($command);

Hij zou dus eerst de echo's moeten laten zien, 5 seconden wachten en dan de pagina sluiten, hoe moet ik dit doen?

Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Door je eerst eens te verdiepen in het hele clientside vs serverside verhaal en wat voor consequenties dit heeft. Ook zul je moeten kijken wat er gebeurt met je response. Wat de webserver er mee doet en wanneer hij dat doet. Wat de webbrouwser er mee doet, en ook hier weer wanneer hij dit doet.

Sowieso zou ik me eens af gaan vragen of je wel 'the right tool for the right job' gebruikt.

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!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
waarom roep je dat niet gewoon via CLI aan inderdaad? hoef je niks af te sluiten want dat gaat vanzelf..

Je opent nu een proces in een proces..

Acties:
  • 0 Henk 'm!

Verwijderd

Hoe zit het met de veiligheid hiervan? Ik ben op zoek naar een dergelijke oplossing, maar om je IIS USR nu rechten te geven op cmd.exe, is dat wel zo veilig?

Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Kort antwoord: nee.

Door de rechten op cmd.exe kan iets zo ongeveer alles uitvoeren. Zeker dit soort onbetrouwbare gebruikers wil je het minimale aan rechten geven voor de dingen die ze moeten doen.

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!

  • Pin0
  • Registratie: November 2002
  • Niet online
Of je script idd gewoon command-line runnen

iets van
c:\pathnaar\php.exe script.php

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


Acties:
  • 0 Henk 'm!

Verwijderd

Pin0 schreef op dinsdag 22 juli 2008 @ 12:07:
Of je script idd gewoon command-line runnen

iets van
c:\pathnaar\php.exe script.php
Hmm, dat is me niet helemaal duidelijk. Je moet dan toch nog steeds hiervan een batch bestand maken en deze vervolgens via cmd.exe runnen? Dan zit je toch met het zelfde of begrijp ik het verkeerd?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Volgens mij begrijp ik het niet helemaal goed... je wil een script draaien in je browser en als ie klaar is met het uitvoeren van het script wil je dat je browser gesloten wordt? Dat kan niet want de server kan niet remote op de client een browser afsluiten.

Als dat niet is wat je bedoelt dan ga ik mee met Pin0, als je zo het script draait dan zal het niet via je browser gaan. Je kunt ook bijv. een cronjob maken ervan die elke x aantal minuten bijv. dat uitvoert.
Pagina: 1