![](/img/trans.png)
[英]Working with PHP shell_exec and SpiderMonkey Javascript Shell
[英]php shell_exec() function not working when the php page is deployed on to the internet
我创建了一个非常基本的 php 页面,其中包含以下代码:
<?php
$out = shell_exec('ipconfig');
echo $out
?>
此代码在 web 页面上成功打印了我的 IP 地址。 但是,当使用任何托管平台在 Internet 上制作此页面时,它不会在 web 页面上打印任何内容,并且变量 out( $out
) 的值也是 null。
如何解决这个问题?
它在 Shell 上返回 ip,这将始终在服务器上返回 null。
要在服务器上获取 ip:
服务器 IP 您可以从 $_SERVER['SERVER_ADDR'] 获取服务器 IP 地址。
客户端IP地址
您可以从 $_SERVER['REMOTE_ADDR'] 获取客户端 IP
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr=$cols[1];
}
}
如果您只想将结果直接转储给用户,您可以切入正题并使用 passthru():
$cmd = shell_exec('ipconfig');
echo '<pre>';
passthru($cmd);
echo '</pre>';
如果你想在程序运行时显示 output,你可以这样做:
while (@ ob_end_flush()); // end all output buffers if any
$proc = popen($cmd, 'r');
echo '<pre>';
while (!feof($proc))
{
echo fread($proc, 4096);
@ flush();
}
echo '</pre>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.