[linux] Re: PHP: parameter passing aan exec

Rob Sterenborg rob op sterenborg.info
Wo Sep 20 13:29:52 CEST 2006


On Wed, September 20, 2006 12:11, Hans Paijmans wrote:
>

> Is er een goede reden waarom de exec-functie van PHP maar
> drie commandline parameters wil doorgeven???
>
> $command="sh paai_mix hoogte_diff result ".$alpha." ".$beta." x ";
> echo $command; // klopt exec($command,$out,$err);
>
> en vervolgens worden de parameters $4 en $5 niet door paai_mix gelezen. Als
> hetzelfde commando gewoon vanaf de cli wordt gegeven is alles OK.
>
> Weird.

Probeer het eens zonder "sh" en met het complete pad naar "paai_mix".
Bij mij werkt dat gewoon, zie onder.


Gr,
Rob




=====================
$ ./test.php
[cmdline] ./test een twee drie vier vijf
[out] Array
(
    [0] => [een]
    [1] => [twee]
    [2] => [drie]
    [3] => [vier]
    [4] => [vijf]
)

[cmdline] ./test een twee drie vier
[out] Array
(
    [0] => [een]
    [1] => [twee]
    [2] => [drie]
    [3] => [vier]
)

[cmdline] ./test een twee drie
[out] Array
(
    [0] => [een]
    [1] => [twee]
    [2] => [drie]
)

[cmdline] ./test een twee
[out] Array
(
    [0] => [een]
    [1] => [twee]
)

[cmdline] ./test een
[out] Array
(
    [0] => [een]
)
=====================




=====================
$ cat test.php
#!/usr/local/bin/php
<?
$command="./test";

$params=array("een twee drie vier vijf",
              "een twee drie vier",
              "een twee drie",
              "een twee",
              "een");

foreach ($params as $param) {
  unset($out);
  $cmdline = "$command $param";
  echo "[cmdline] $cmdline\n";
  exec($cmdline, $out, $err);
  print "[out] "; print_r($out); print"\n";
}
?>
=====================




=====================
$ cat test
#!/bin/bash
for param in $@; do
  echo [$param]
done
=====================





More information about the Linux mailing list