我有下一个PHP代码:
<?php
$ip = shell_exec("/sbin/ifconfig | grep 'inet:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'");
echo $ip;
?>
当我从命令行($php5 ip.php
)运行它时它工作正常,但是当我从浏览器运行它时它什么也没有显示(http://localhost/ip.php
)。
顺便说一句,我正在尝试打印我的IP地址,但每当我使用$_SERVER['SERVER_ADDR'];
时,我都会127.0.0.1
。
答案 0 :(得分:4)
它将在'inet'
旁边没有冒号的情况下工作grep 'inet '
答案 1 :(得分:1)
我会编写一个bash脚本来执行此操作并执行bash脚本。 CLI的CLI版本可以访问您的PATH环境变量,Apache模块可能无权访问该变量。
#!/bin/bash
/sbin/ifconfig | grep 'inet:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
然后:
<?php
$ip = shell_exec('/path/to/shell/script');
print $ip;
?>