shell_exec为nslookup查询的空响应

我使用的是Ubuntu和xampp,我试图通过执行命令nslookup gmail.com 。 PHP,但我得到一个空的答复。 当我在Windows机器上以及在运行CentOS的Linux服务器上尝试时,同样的事情也奏效了。

仅供参考当我在terminal上直接运行命令时, nslookup gmail给出了正确的响应,问题只有当我尝试通过。 PHP。

我甚至尝试做一个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); ?> 

当你通过网络浏览器执行的时候,php脚本执行的权限较低的www用户(在你的情况下是daemon)。 它没有足够的权限来执行命令nslookup 。 我不建议增加www用户的特权,这是一个安全风险。 作为替代尝试gethostbyname PHP函数。 它返回与给定Internet主机名相对应的IPv4地址。

 <?php $email = $_GET['email']; $server = explode("@", $email)[1]; echo $server; $ip = gethostbyname($server); echo $ip; ?>