मैं जानता हूँ कि यह एक काफी पुराने सवाल है, लेकिन टी वहाँ प्रतीत नहीं होता o एक निश्चित उत्तर हो (जितना संभव हो सके।) मुझे * NIX बक्से और विन एक्स बॉक्स पर, इस मान को निर्धारित करने की आवश्यकता है। सीएलआई निष्पादित लिपि के साथ-साथ गैर-सीएलआई स्क्रिप्ट से भी। निम्नलिखित कार्य सबसे अच्छा है जिसके साथ मैंने आना शुरू किया है, जो वर्षों से लोगों की विभिन्न अवधारणाओं पर आधारित है।
function getServerAddress() {
if(isset($_SERVER["SERVER_ADDR"]))
return $_SERVER["SERVER_ADDR"];
else {
// Running CLI
if(stristr(PHP_OS, 'WIN')) {
// Rather hacky way to handle windows servers
exec('ipconfig /all', $catch);
foreach($catch as $line) {
if(eregi('IP Address', $line)) {
// Have seen exec return "multi-line" content, so another hack.
if(count($lineCount = split(':', $line)) == 1) {
list($t, $ip) = split(':', $line);
$ip = trim($ip);
} else {
$parts = explode('IP Address', $line);
$parts = explode('Subnet Mask', $parts[1]);
$parts = explode(': ', $parts[0]);
$ip = trim($parts[1]);
}
if(ip2long($ip > 0)) {
echo 'IP is '.$ip."\n";
return $ip;
} else
; // TODO: Handle this failure condition.
}
}
} else {
$ifconfig = shell_exec('/sbin/ifconfig eth0');
preg_match('/addr:([\d\.]+)/', $ifconfig, $match);
return $match[1];
}
}
}
स्रोत
2011-06-06 19:00:42
पर पास करने के लिए होस्टनाम खींचने के लिए php_uname ('n') का उपयोग कर सकते हैं धन्यवाद - यह बहुत अच्छा था: मेरा समाधान था: getHostByName (getHostName()) ; – ChronoFish
यह 5.3 समाधान है - लेकिन शुक्र है कि मैं 5.3 – ChronoFish
चला रहा हूं <5.3 के लिए पृष्ठ के नीचे एक टिप्पणी है। –