$ip=$_SERVER['REMOTE_ADDR'];
$mac=shell_exec('arp-a'.'$ip')
echo $mac;
我想拿一个机器的接收IP地址并将其传递给shell命令它运行良好如果我手动提供ipaddress但是通过变量它不能正常工作。如果手动提供ip就可以正常工作,例如: mac = shell_exec('arp -a 192.168.0.32');
答案 0 :(得分:2)
你忘了空格:
$mac=shell_exec('arp-a'.'$ip')
^-^--here
所以你正在执行的命令实际上是
arp-a127.0.0.1
而不是
arp -a 127.0.0.1
请注意'
不会插入变量,因此您将文字$
,i
,p
个字符传递给shell。你根本不需要引号:
$mac = shell_exec('arp -a ' . $ip);
答案 1 :(得分:0)
你的$ ip在引号中,所以你传递了一个实际的" $ ip"字面意思。
试试这个
<?php
namespace Concrete\Package\SomePackage;
class Controller extends \Concrete\Core\Package\Package
{
public function on_start()
{
$app = \Core::make('app');
$app->make('director')->addEventListener(
'on_before_render',
function() use ($app) {
$session = $app->make('session');
$flashBag = $session->getFlashBag();
if (!$flashBag->has('my-custom-data')) {
$dataGetter = $app->make('YourCustomDataGetterClass');
$flashBag->set('my-custom-data', $dataGetter->getData());
}
}
);
}
}