Shell命令无法通过php中的exec()工作

时间:2013-07-17 14:04:35

标签: php exec

我正在通过PHP exec()函数执行php函数,但它似乎只传递了1个变量。

$url = "http://domain.co/test.php?phone=123&msg=testing"
exec('wget '.$url);

在test.php文件中我有

$msg = "msg =".$_GET["msg"]." number=".$_GET["phone"];
mail('me@gmail.com', 'Working?', $msg);

我收到的电子邮件只返回手机变量。

但如果我更改网址如下

$url = "http://domain.co/test.php?msg=testing&phone=123"

我得到msg但不是phone?什么导致这种奇怪行为?

2 个答案:

答案 0 :(得分:4)

&符号是Unix shell中的特殊字符。你需要逃脱它:

exec("wget '$url'");

此外,如果您的网址以任何方式基于用户输入,请务必使用escapeshellarg将其转义。否则,您的用户将能够在您的服务器上运行任意Unix命令。

答案 1 :(得分:1)

$url = "http://domain.co/test.php?phone=123&msg=testing"
exec('wget "'.$url.'"');

你需要引用网址


&安培;是将任务置于背景中的标志