[php] system() in variable zetten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
Als ik met system een os commando wil uitvoeren en deze in een variable wil zetten staat alleen de laatste regel in de variable, en system() geeft ook nog een output op het scherm terwijl ik hem toch in een variable zet :?

PHP:
1
2
3
$ls = system("ls -la");

print $ls;


geeft als output

code:
1
2
3
4
5
total 12
drwxr-xr-x    2 ipv6     wwwusers     4096 Jan  5 21:38 .
drwxr-x---   13 ipv6     www-data     4096 Feb  1 18:54 ..
-rw-r--r--    1 ipv6     wwwusers      664 Feb  1 20:35 index.php
-rw-r--r--    1 ipv6     wwwusers      664 Feb  1 20:35 index.php



Dus de eerste 4 regels zijn van system() terwijl ik deze toch in een variable gooit maar geeft toch output?

En de laaste (dubbele) regel is van print, de variable $ls heeft alleen de laatste regel waarom niet het geheel :? dat is wat ik wil. Dus hoe moet ik dat dan doen, heb al op verschillende manieren met " en met ' gewerkt maar niets helpt.

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

doe dan
PHP:
1
$ls = `ls -la`;

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

Verwijderd

Of als je het in een functie wilt, zodat je variabelen kunt gebruiken:

http://www.php.net/manual/en/function.shell-exec.php

Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
chem schreef op 01 February 2003 @ 20:47:
doe dan
PHP:
1
$ls = `ls -la`;
mmm, kan dat ook in php :? doet me denken aan shell scripting :)
maar dit doet inderdaad wat ik wil.

[ Voor 9% gewijzigd door eth0 op 01-02-2003 20:52 ]


Acties:
  • 0 Henk 'm!

Verwijderd

eth0 schreef op 01 February 2003 @ 20:51:

mmm, kan dat ook in php :? doet me denken aan shell scripting :)
maar dit doet inderdaad wat ik wil.

Dat is php

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:29
chem schreef op 01 February 2003 @ 20:47:
doe dan
PHP:
1
$ls = `ls -la`;
Uhm dan heb je idd ls -la in je je variabele zitten, dit is alleen niet de bedoeling de output moet er inkomen. Maar system flushed alles direct naar de output. Er zijn andere functies die dat niet doen. (Zoals exec() )

Acties:
  • 0 Henk 'm!

Verwijderd

Eskimootje schreef op 01 februari 2003 @ 20:54:

Uhm dan heb je idd ls -la in je je variabele zitten, dit is alleen niet de bedoeling de output moet er inkomen. Maar system flushed alles direct naar de output. Er zijn andere functies die dat niet doen. (Zoals exec() )

Voer het eens uit dan, dan praten we erna weer verder :z

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:29
Verwijderd schreef op 01 februari 2003 @ 20:55:

[...]

Voer het eens uit dan, dan praten we erna weer verder :z
Mja zal wel aan mij liggen maar dr komt bij mij ls -la in te staan :|
system() is just like the C version of the function in that it executes the given command and outputs the result. If a variable is provided as the second argument, then the return status code of the executed command will be written to this variable.

[ Voor 36% gewijzigd door Eskimootje op 01-02-2003 20:59 ]


Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
Bij mij geeft hij de output van ls -la en niet ls -la zelf weer. Dit is dus precies wat ik wou. met $ls = `ls -la`;

ps zo werkt het ook nie zoals bij php,net staat hier boven.
PHP:
1
2
3
system("ls -la", $ls);

print $ls;

[ Voor 4% gewijzigd door eth0 op 01-02-2003 21:04 ]


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:29
eth0 schreef op 01 februari 2003 @ 21:04:
Bij mij geeft hij de output van ls -la en niet ls -la zelf weer. Dit is dus precies wat ik wou. met $ls = `ls -la`;

ps zo werkt het ook nie zoals bij php,net staat hier boven.
PHP:
1
2
3
system("ls -la", $ls);

print $ls;
Dat is omdat je het niet helemaal snapt denk ik als je
$blaat = system("ls -la", "iets");
dan krijgt de $blaat de waarde "iets" toegekend niet wat jij probeerd.
* Eskimootje herhaald nogmaal $blaat = exec("ls -la")

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Eskimootje schreef op 01 februari 2003 @ 20:58:
[...]

Mja zal wel aan mij liggen maar dr komt bij mij ls -la in te staan :|

[...]
moet je wel de backtick gebruiken ;)

` ipv '

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:29
Erkens schreef op 01 februari 2003 @ 21:18:
[...]

moet je wel de backtick gebruiken ;)

` ipv '
Mja dus... 8)7
blijft mijn oplossing netter >> leesbaarder.

[ Voor 14% gewijzigd door Eskimootje op 01-02-2003 21:31 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Eskimootje schreef op 01 February 2003 @ 21:20:
[...]

Mja dus... 8)7
blijft mijn oplossing netter >> leesbaarder.
mja, `ls -al` is nu eenmaal minder typwerk, en dus geniet dat mijn voorkeur :+

Acties:
  • 0 Henk 'm!

Verwijderd

En exec doet iets anders dan de backtick operator. Ik ga voor de functie shell_exec().
Pagina: 1