我正在通过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
?什么导致这种奇怪行为?
答案 0 :(得分:4)
&
符号是Unix shell中的特殊字符。你需要逃脱它:
exec("wget '$url'");
此外,如果您的网址以任何方式基于用户输入,请务必使用escapeshellarg
将其转义。否则,您的用户将能够在您的服务器上运行任意Unix命令。
答案 1 :(得分:1)
$url = "http://domain.co/test.php?phone=123&msg=testing"
exec('wget "'.$url.'"');
你需要引用网址
&安培;是将任务置于背景中的标志