使用PHP从ifconfig获取IP地址

使用PHP从ifconfig获取IP地址,php,ip,ifconfig,Php,Ip,Ifconfig,我有下一个php代码: <?php $ip = shell_exec("/sbin/ifconfig | grep 'inet:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'"); echo $ip; ?> 当我从命令行$php5ip.php运行它时,它工作正常,但当我从浏览器运行它时,它什么也没有显示http://localhost/ip.php. 顺便说一句,我正试图打印我的IP地址,但每当我使用$

我有下一个php代码:

<?php
   $ip = shell_exec("/sbin/ifconfig  | grep 'inet:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'");
   echo $ip;
?>
当我从命令行$php5ip.php运行它时,它工作正常,但当我从浏览器运行它时,它什么也没有显示http://localhost/ip.php.


顺便说一句,我正试图打印我的IP地址,但每当我使用$_SERVER['SERVER\u ADDR'];我得到127.0.0.1。

它将在“inet”旁边没有冒号的情况下工作

grep 'inet '

在“inet”旁边没有冒号的情况下,它可以工作

grep 'inet '

我将编写一个bash脚本来实现这一点,并执行bash脚本。PHP的CLI版本可以访问PATH环境变量,Apache模块可能无权访问该变量

#!/bin/bash

/sbin/ifconfig | grep 'inet:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
然后:


我将编写一个bash脚本来实现这一点,并执行bash脚本。PHP的CLI版本可以访问PATH环境变量,Apache模块可能无权访问该变量

#!/bin/bash

/sbin/ifconfig | grep 'inet:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
然后:


这是什么操作系统?My Linux box'ifconfig列出了标有inet addr:,而不是inet:,它是Ubuntu 10.04的IP地址。。。但有些结果是用西班牙语显示的,所以“inet addr:”会变成“Direcc”。inet:'这是什么操作系统?My Linux box'ifconfig列出了标有inet addr:,而不是inet:,它是Ubuntu 10.04的IP地址。。。但有些结果是用西班牙语显示的,所以“inet addr:”会变成“Direcc”。inet:'是的,它能工作!。但是,regexp也得到inet6,我怎么能只得到inet呢?你可以在搜索模式grep'inet'的末尾使用空格好的,谢谢,它现在可以工作了。但是,为什么我原来的regexp在命令行中工作,而在浏览器中不工作呢?在Apache下运行时,您可能会从ifconfig获得英文输出。是的,它可以工作!。但是,regexp也得到inet6,我怎么能只得到inet呢?你可以在搜索模式grep'inet'的末尾使用空格好的,谢谢,它现在可以工作了。但是为什么我原来的regexp在命令行中工作,而在浏览器中却不工作呢?在Apache下运行时,您可能会从ifconfig获得英文输出。