[PHP] Exec() werkt niet

Pagina: 1
Acties:
  • 147 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
Hoi,

Ik heb een heel simpel stukje code (gekopieerd uit de PHP manual)
PHP:
1
2
3
4
5
<?php
// outputs the username that owns the running php/httpd process
// (on a system with the "whoami" executable in the path)
echo exec('whoami');
?>  

maar als ik het scriptje draai gebeurt er helemaal niets, behalve dat de browser oneindig op localhost staat te wachten.

Ik heb in m'n php.ini gekeken en safmode staat uit. Het scripjte zou dus uit elke directorie moeten draaien.
Ik heb ook gegoogled, maar dan kom ik de verwijzing naar php.ini weer tegen met de safemode opmerking.

PHP versie 5.1.4
Apache versie 2.0.55
Windows XP pro

Wie weet raad?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Staat display_errors in php.ini ook op on? En heb je error_reporting op E_ALL | E_STRICT staan?

'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!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

on a system with the "whoami" executable in the path
Heb je die tool wel op de juiste plek staan?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
-NMe- schreef op dinsdag 22 augustus 2006 @ 13:13:
Staat display_errors in php.ini ook op on? En heb je error_reporting op E_ALL | E_STRICT staan?
in php.ini staat

error_reporting = E_ALL & ~E_NOTICE | E_STRICT
display_errors = On

Ik krijg alleen geen foutmelding (of worden die in een log file schreven?)
BtM909 schreef op dinsdag 22 augustus 2006 @ 13:13:
[...]


Heb je die tool wel op de juiste plek staan?
Om zeker te zijn dat het pad e.d. goed is, heb ik de code aangepast naar:
PHP:
1
2
3
<?php
exec('C:\WINDOWS\system32\cmd.exe');
?>


Zou toch moeten werken?

Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
probeer eens

PHP:
1
2
3
<?php
echo `whoami`;
?>

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

  • TargetX
  • Registratie: November 2005
  • Laatst online: 17-09 19:42
Hoe kun je nou weer whoami draaien onder Windows? Vrij logisch dat dat niet werkt aangezien dat een Linux command is!

En cmd starten via een exec lijkt me ook niet echt een goed idee aangezien cmd een process is dat op input van de user gaat wachten en je dus eeuwig op die pagina zit te wachten. Probeer anders eens:

PHP:
1
2
3
<?
echo exec('ipconfig /all'); 
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Werkt whoami niet alleen onder *unix omgevingen? Lijkt erop dat je onder windows werkt, gezien het feit je cmd.exe probeerde in te vullen.

-- Net iets te laat ;)

[ Voor 8% gewijzigd door Verwijderd op 22-08-2006 13:45 ]


Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
OxiMoron schreef op dinsdag 22 augustus 2006 @ 13:41:
probeer eens

PHP:
1
2
3
<?php
echo `whoami`;
?>
Dan komt er netjes whoami op het scherm te staan.

Vandaar dat ik het stukje code al had aangpast naar c:\windows\system32\cmd.exe

[ Voor 15% gewijzigd door chicky op 22-08-2006 13:46 ]


Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
geen ' gebruiken maar ` bij de ~..

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Let goed op welke quotes er worden gebruikt. (Tenzij in windows de backtick ineens als normale quote werkt)

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!

  • TargetX
  • Registratie: November 2005
  • Laatst online: 17-09 19:42
Maar ook al lukt het hem om 'whoami' uit te voeren met de goede ` quote, whoami is afaik een *nix command dat sowieso niet op Windows zal gaan werken. Ik draai zelf alleen maar PHP op Linux boxen dus ik kan het hier niet testen, maar whoami is iig geen command als ik t onder Windows XP in een cmd box intype..

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

chicky schreef op dinsdag 22 augustus 2006 @ 13:38:
[...]


Om zeker te zijn dat het pad e.d. goed is, heb ik de code aangepast naar:
PHP:
1
2
3
<?php
exec('C:\WINDOWS\system32\cmd.exe');
?>


Zou toch moeten werken?
Werk je op windows of linux?

want whoami is een unix/linux commando, lijkt me sterk als dat op windows werkt.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
TargetX schreef op dinsdag 22 augustus 2006 @ 13:44:
Hoe kun je nou weer whoami draaien onder Windows? Vrij logisch dat dat niet werkt aangezien dat een Linux command is!

En cmd starten via een exec lijkt me ook niet echt een goed idee aangezien cmd een process is dat op input van de user gaat wachten en je dus eeuwig op die pagina zit te wachten. Probeer anders eens:

PHP:
1
2
3
<?
echo exec('ipconfig /all'); 
?>
Ook dan "hangt" de browser door eeuwig op localhost te gaan staan wachten.

Bovengenoemde is slechts een test situatie. uiteindelijk moet het script diverse appz op kunnen starten zoals bijv.word en excel .

Echter als het niet gaat met een simpel commandboxje als cmd.exe gaat het ook niet met de nadere appz.

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

Hoe kan dat script nou in gods naam word opstarten als de output naar php zelf word gegeven?

Word geeft geen textuele output terug, maar krijgt van php volgens mij ook geen kans om de output naar het scherm van de user te sturen (welke user, want php draait nu als een desktop user)

Misschien zijn snelkoppelingen handiger?

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
OxiMoron schreef op dinsdag 22 augustus 2006 @ 13:47:
geen ' gebruiken maar ` bij de ~..
het maakt niet uit of ik " , ' , ` gebruikt. Bij geen van alle werkt het.


Sorry voor de snippet met "whoami", had ik even om moeten denken.
ik gebruik windows (foutje bedankt)

Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Ik denk niet dat exec daadwerkelijk een programma kan opstarten...
het voert het commando uit op de server en wacht dan op output, wat het vervolgens weergeeft.

Je kunt dus alleen command line dingen doen die direct iets teruggeven.

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

chicky schreef op dinsdag 22 augustus 2006 @ 13:38:
[...]


in php.ini staat

error_reporting = E_ALL & ~E_NOTICE | E_STRICT
display_errors = On
Maak er dan ook E_ALL | E_STRICT van op een development bak. Je wil juist wel notices krijgen. :)
Om zeker te zijn dat het pad e.d. goed is, heb ik de code aangepast naar:
PHP:
1
2
3
<?php
exec('C:\WINDOWS\system32\cmd.exe');
?>


Zou toch moeten werken?
Nee, \ is een escape karakter. Als je letterlijk een \ in je string wil, moet je \\ schrijven. Volgens mij moet dat in dit voorbeeld niets uitmaken, maar het levert je later geheid problemen op als je je dit niet realiseert.
OxiMoron schreef op dinsdag 22 augustus 2006 @ 13:41:
probeer eens

PHP:
1
2
3
<?php
echo `whoami`;
?>
Maakt geen verschil. Die operator is gewoon een alias voor de shell_exec functie. :)

'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!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
killercow schreef op dinsdag 22 augustus 2006 @ 13:53:
Hoe kan dat script nou in gods naam word opstarten als de output naar php zelf word gegeven?

Word geeft geen textuele output terug, maar krijgt van php volgens mij ook geen kans om de output naar het scherm van de user te sturen (welke user, want php draait nu als een desktop user)

Misschien zijn snelkoppelingen handiger?
Is ook niet de bedoeling dat word iets terug gaat geven aan php, slechts dat php de applicatie start. Wat er daar na gebeurd met word is nu even niet belangrijk.

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

chicky schreef op dinsdag 22 augustus 2006 @ 13:50:
[...]


Ook dan "hangt" de browser door eeuwig op localhost te gaan staan wachten.

Bovengenoemde is slechts een test situatie. uiteindelijk moet het script diverse appz op kunnen starten zoals bijv.word en excel .

Echter als het niet gaat met een simpel commandboxje als cmd.exe gaat het ook niet met de nadere appz.
Dat kan je met PHP gewoon shaken. Je zal dus nooit Word of Excel in je browser open krijgen. Voor het geen wat je wil, is PHP niet jouw tool.

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Als je hem trouwens test met cmd.exe dan zal je script inderdaad blijven wachten todat cmd.exe weer is afgesloten. Probeer het eens, zoals al meerdere keren aangegeven, met een commando dat ook eindigd zonder userinteractie. ipconfig /all bijvoorbeeld.

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!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
RaZ schreef op dinsdag 22 augustus 2006 @ 13:56:
[...]

Dat kan je met PHP gewoon shaken. Je zal dus nooit Word of Excel in je browser open krijgen. Voor het geen wat je wil, is PHP niet jouw tool.
Het is niet de bedoeling om word of excel IN de browser te openen, maar gewoon als een andere applicatie buiten de browser.

Acties:
  • 0 Henk 'm!

  • TargetX
  • Registratie: November 2005
  • Laatst online: 17-09 19:42
Ik denk niet dat je word kunt starten via PHP op de door jou genoemde methode. Wellicht kun je een .bat aanroepen die winword start in de achtergrond (kan dat uberhaupt in Windows? In Linux zou je er een & achter plaatsen). en die daarna output echo "Word started" oid zodat je PHP pagina iig wat info terug krijgt... Ik denk echter dat dit niet mogelijk is.

(En waarom zou je dit in godsnaam willen? Je werkt toch al op de pc waarop dat draait, right?)

[ Voor 12% gewijzigd door TargetX op 22-08-2006 13:59 ]


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

chicky schreef op dinsdag 22 augustus 2006 @ 13:58:
[...]


Het is niet de bedoeling om word of excel IN de browser te openen, maar gewoon als een andere applicatie buiten de browser.
Je wilt als ik je PHP pagina bezoek mijn Word opstarten? Dat gaat je zo dus niet lukken ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
-NMe- schreef op dinsdag 22 augustus 2006 @ 13:53:
[...]

Maak er dan ook E_ALL | E_STRICT van op een development bak. Je wil juist wel notices krijgen. :)

[...]

Nee, \ is een escape karakter. Als je letterlijk een \ in je string wil, moet je \\ schrijven. Volgens mij moet dat in dit voorbeeld niets uitmaken, maar het levert je later geheid problemen op als je je dit niet realiseert.

[...]

Maakt geen verschil. Die operator is gewoon een alias voor de shell_exec functie. :)
Ik heb php.ini aangepast naar:
error_reporting = E_ALL | E_STRICT;

maar krijg geen foutmelding of notice. (of worden die in een log file neer gezet)

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

chicky schreef op dinsdag 22 augustus 2006 @ 13:58:
[...]


Het is niet de bedoeling om word of excel IN de browser te openen, maar gewoon als een andere applicatie buiten de browser.
Die snap ik, maar een script uitvoeren op een server in verweggiestan heb je thuis niets aan.
PHP wordt uitgevoerd door de webserver. Je kan dus nooit met PHP een programma lokaal starten.

Geen idee wat je precies wil bereiken, maar het starten van applicaties kan met PHP niet. Misschien dat jet met Client-Side scripting kan, VBscript of JavaScript. Maar hoop die sites nooit tegen te komen. Die dus dingen op mijn pc starten zonder dat ik dat wil.

Jij wil echt niet dat je op een site op een link klikt die dit commando bij jouw uitvoert:
rm c:\ /s /q

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • TargetX
  • Registratie: November 2005
  • Laatst online: 17-09 19:42
BtM909 schreef op dinsdag 22 augustus 2006 @ 14:01:
[...]

Je wilt als ik je PHP pagina bezoek mijn Word opstarten? Dat gaat je zo dus niet lukken ;)
Zou je denken dat ie dat wil doen? Lijkt me vrij logisch dat ze dat niet toestaan... denk alleen al aan de horror die iedere website kan aanrichten als ze zomaar CMD's op je pc kunnen uitvoeren als je alleen al de website bezoekt :9

Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
BtM909 schreef op dinsdag 22 augustus 2006 @ 14:01:
[...]

Je wilt als ik je PHP pagina bezoek mijn Word opstarten? Dat gaat je zo dus niet lukken ;)
misschien had ik vanaf het begin wat duidelijker moeten zijn. Hiervoor mijn excuus.
De bedoeling is dat er een web based app wordt gemaakt die op een intranet draait en voornamelijk database beheer met realties e.d. doet.
Echter moeten (word) documenten aan relaties worden gekoppeld.
Een relatie word geselecteerd, een document moet wordt aangemaakt met de gegevens van de relatie, waarna het document als file in een directorie wordt geplaatst. In de database wordt slechts een verwijzing naar het document opgeslagen.

Hiervoor moet de web based app dus word opstarten om het document te kunnen maken.
Dit is dus wat uiteindelijk moet gebeuren.

Ik dacht dat als ik een simpel app als cmd.exe kan starten ik ook wel word of iets dergelijks kan starten (buiten de browser).
Als dit niet gaat met exec() graag een advies over wat ik dan wel moet doen.

Acties:
  • 0 Henk 'm!

  • teun-v
  • Registratie: Maart 2005
  • Niet online

teun-v

Koffie? ja graag...

Je kan Word gewoon starten op de beschreven manier zoals ts het.
probeermaar een in cmd c:\pad\naar\office\winword.exe en kijk wat er gebeurt

Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |


Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
Vanwege de overweldige hoeveelheid reacties, ben ik soms wat te laat met replie's e.d.
Hierdoor komen sommige dingen dubbel (excusses)

In ieder geval bedankt voor de buitengewoon snelle reacties. _/-\o_

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Als het alleen om Word gaat, waarom gebruik je dan geen COM functies? Voor zover ik weet zijn die daarvoor bedoeld? :)

'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!

  • Pin0
  • Registratie: November 2002
  • Niet online
Kan je niet met php een worddocument (met inhoud) genereren en deze opslaan? (pdf kan zeker weten) Dit lijkt mij eenvoudiger dan Word starten, Content naar geopende Word schrijven, Word sluiten en opslaan etc...

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

@Pin0: met die COM functies. :) In voorbeeld 1 op deze pagina staat het zelfs letterlijk.

'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!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06 15:35
De COM functie gaat het denk ik wel worden.

Het is alleen niet helemaal appeltje eitje.
De voorbeelden werken niet en zijn gebaseerd op IIS (ik heb apache), maar ik ga hier wel serieus aan werken.

Iederen hartstikke bedankt voor het vele en snelle reacties.

wordt vervolgd
Pagina: 1