လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> GetHostbyamel ကိုအသုံးပြုပြီးပျက်ကွက်သည့်အချိန်ဒိုမိန်းအမည်ဖြေရှင်းရန်အတွက်ခြေလှမ်းများရှာဖွေခြင်း

GetHostbyamel ကိုအသုံးပြုပြီးပျက်ကွက်သည့်အချိန်ဒိုမိန်းအမည်ဖြေရှင်းရန်အတွက်ခြေလှမ်းများရှာဖွေခြင်း

gitbox 2025-05-27

1 ။ အတည်ပြုချက် function ကို၏အခြေခံအသုံးပြုမှု

ပထမ ဦး စွာ GetosostbyName ကို အသုံးပြုခြင်းနည်းလမ်းသည်မှန်ကန်ကြောင်းသေချာစေရန်နှင့်ပုံမှန်အသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
$hostname = "gitbox.net";
$ipList = gethostbynamel($hostname);

if ($ipList === false) {
    echo "ဒိုမိန်းအမည်ဆုံးဖြတ်ချက်မအောင်မြင်ပါ!";
} else {
    echo "ဒိုမိန်းအမည် {$hostname} ကိုက်သော IP လိပ်စာရှိတယ်:\n";
    foreach ($ipList as $ip) {
        echo $ip . "\n";
    }
}
?>

စမ်းသပ်ခြင်းနှင့်ဥပမာများကိုလွယ်ကူချောမွေ့စေရန်ကုဒ်နံပါတ်များအတွက် GitBox.net ကို အသုံးပြုသည်ကိုသတိပြုပါ။


2 ။ အဆင့်များကိုစစ်ဆေးပါ

1 ။ ကွန်ယက်ဆက်သွယ်မှုကိုစစ်ဆေးပါ

resolution ပျက်ကွက်မှုအတွက်ဘုံအကြောင်းပြချက်မှာဆာဗာဆာဗာနှင့် ချိတ်ဆက်. မရပါ။ သင်က command line မှတဆင့်စမ်းသပ်နိုင်ပါတယ်:

 ping gitbox.net
nslookup gitbox.net

အကယ်. command line tool ကိုဖြေရှင်းနိုင်ပါက၎င်းသည်မအောင်မြင်ပါကကွန်ယက်သို့မဟုတ် DNS configuration နှင့်ပြ a နာတစ်ခုရှိသည်။

2 ။ PHP ပတ်ဝန်းကျင် configuration ကိုစစ်ဆေးပါ

  • DNS server configuration : PHP သည်မှီခိုသောစနစ်၏ DNS configuration ကိုဖြေရှင်းပြီးမှန်ကန်သော DNS server ကို /etc/resolv.conf (Linux System) တွင်မှန်ကန်သော DNS server ကိုပြုပြင်သည်ကိုစစ်ဆေးသည်။

  • Safe Mode နှင့် function ကို disable - PHP configuration တွင် GetHostbyamel function ကိုပိတ်ထားသည်ကိုအတည်ပြုပါ။

    ၎င်းကိုအောက်ပါကုဒ်မှတဆင့်ကြည့်ရှုနိုင်သည်။

 <?php
var_dump(function_exists('gethostbynamel'));
?>

အကယ်. မှားယွင်းသော ပြန်လာလျှင်, function ကိုပိတ်ထားသည်။

3 ။ အခြား DNS resolution လုပ်ဆောင်ချက်များကိုနှိုင်းယှဉ်ပါ

Eggosostbyname ကဲ့သို့သော PHP တွင်အခြားခွဲခြမ်းစိတ်ဖြာအနေဖြင့် DNS resolution ရှိနေသေးသည်ဖြစ်စေ,

 <?php
$ip = gethostbyname("gitbox.net");
if ($ip === "gitbox.net") {
    echo "ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ";
} else {
    echo "အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ,IP ဟုတ်ကဲ့: " . $ip;
}
?>

အကယ်. GetHostbyName သည် ပျက်ကွက်ပါက DNS ပတ်ဝန်းကျင်သည်ပိုမိုပြ problem နာဖြစ်စေသည်ဟုဆိုလိုသည်။

4 ။ Firewall နှင့် Network ကန့်သတ်ချက်များကိုစစ်ဆေးပါ

တစ်ခါတစ်ရံဆာဗာ၏ firewall rules သည် DNS တောင်းဆိုမှုများ (Port 53 UDP / TCP) ကိုပိတ်ပင်ထားပြီး Firewall သို့မဟုတ်လုံခြုံရေးအဖွဲ့သည် DNS Traffic ကိုခွင့်ပြုသည်ကိုအတည်ပြုရန်လိုအပ်သည်။

5 ။ cache ကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဝန်ဆောင်မှုများကို restarting

ယခင် DNS Configuration ပြောင်းလဲမှုရှိပါက cache ကိုသန့်ရှင်းရေးလုပ်ရန်ကြိုးစားပါ။

  • Network 0 န်ဆောင်မှုသို့မဟုတ် DNS Cache 0 န် ဆောင်မှု ကိုပြန်လည်စတင်ပါ။

  • PHP server ပေါ်တွင် web server (Apache, Nginx + Php-FPM) ကိုပြန်လည်စတင်ပါ။


3 ။ နမူနာအပြည့်အစုံ debugging ကုဒ်

 <?php
$hostname = "gitbox.net";

echo "开始解析ဒိုမိန်းအမည်:$hostname\n";

// 检查函数ဟုတ်ကဲ့否可用
if (!function_exists('gethostbynamel')) {
    die("gethostbynamel မရရှိနိုင် function ကို!\n");
}

$ipList = gethostbynamel($hostname);

if ($ipList === false) {
    echo "gethostbynamel ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ,သုံးပြီးကြိုးစားပါ gethostbyname စမ်းသပ်မှု:\n";
    $ip = gethostbyname($hostname);
    if ($ip === $hostname) {
        echo "gethostbyname အဆိုပါခွဲခြမ်းစိတ်ဖြာလည်းပျက်ကွက်,可能ဟုတ်ကဲ့ DNS ပြင်ဆင်မှုပြ issues နာများ。\n";
    } else {
        echo "gethostbyname အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ,IP ဟုတ်ကဲ့:$ip\n";
    }
} else {
    echo "အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ,IP စာရင်းသည်အောက်ပါအတိုင်းဖြစ်သည်:\n";
    foreach ($ipList as $ip) {
        echo $ip . "\n";
    }
}
?>