我正在使用ubuntu和xampp,我正在尝试通过执行命令nslookup gmail.com
via。php,但是我得到了一个空的响应。当我在windows机器上和运行centos的linux服务器上尝试时,同样的方法也起作用了。
当我直接在终端上运行命令时,nslookup gmail
会给出正确的响应,问题是只有当我尝试通过。菲律宾比索。
我甚至试着做一个which nslookup
然后$nslookup = shell_exec("/usr/bin/nslookup $server");
没有帮助,只是同样的空白回复。
尽管需要注意的是,从php执行命令whoami
时(我在下面的代码中对其进行了注释),确实会给出正确的响应daemon
我对ubuntu很陌生,所以有点帮助会很好。
<?php
$email = $_GET['email'];
$server = explode("@", $email)[1];
echo $server;
$nslookup = shell_exec("nslookup $server");
// $nslookup = shell_exec("whoami");
print_r($nslookup);
?>
最佳答案
当您通过web浏览器执行时,php脚本作为特权较低的www用户(在您的情况下是守护进程)执行。它没有足够的权限执行命令nslookup
。我不建议增加www用户的特权,这是一个安全风险。另一种方法是尝试gethostbynamephp函数。它返回与给定Internet主机名对应的IPv4地址。
<?php
$email = $_GET['email'];
$server = explode("@", $email)[1];
echo $server;
$ip = gethostbyname($server);
echo $ip;
?>
关于php - shell_exec对nslookup查询的响应为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33974037/