PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဖိုင်လမ်းကြောင်းဆိုင်ရာပြ issues နာများကိုကိုင်တွယ်ရန်လိုအပ်သည်, ဤဆောင်းပါးသည်ဖိုင်၏တကယ့်လမ်းကြောင်းကိုတိကျစွာရရှိနိုင်သည့် is_link () နှင့် realpath () လုပ်ဆောင်ချက်များကိုမည်သို့ပေါင်းစပ်ရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
IS_LINK () - သတ်မှတ်ထားသောလမ်းကြောင်းသည်သင်္ကေတ link ကိုဆုံးဖြတ်သည်။
Realpath () - သတ်မှတ်ထားသောလမ်းကြောင်း၏ပကတိလမ်းကြောင်းကိုပြန်လည်ရောက်ရှိစေပြီးပုံဆောင်လမ်းကြောင်းအားလုံးကိုခွဲခြမ်းစိတ်ဖြာသည်။
Realpath () တစ်ခုတည်းကိုအသုံးပြုခြင်းသည်ဖိုင်ကိုတိုက်ရိုက်လမ်းကြောင်းကိုတိုက်ရိုက်ရနိုင်သော်လည်းအချို့ကိစ္စရပ်များတွင်၎င်းသည်သင်္ကေတလမ်းကြောင်းရှိမရှိကို ဦး စွာဆုံးဖြတ်လိုသည်။ ထို့နောက်လမ်းကြောင်းကိုမည်သို့ကိုင်တွယ်ရမည်ကို ဦး စွာဆုံးဖြတ်လိုသည်။
<?php
// ငါတို့မှာဖိုင်လမ်းကြောင်းရှိတယ်ဆိုပါစို့
$filePath = '/var/www/html/symlink-file';
// ဒီလမ်းကြောင်းသည်သင်္ကေတ link ကိုရှိမရှိဆုံးဖြတ်ပါ
if (is_link($filePath)) {
// ဒါကြောင့်သင်္ကေတ link ကိုလျှင်,အသုံးပြု readlink() link ကိုထောက်ပြသောလမ်းကြောင်းကိုရယူပါ
$linkTarget = readlink($filePath);
// နောက်တဖန်အသုံးပြုပါ realpath() link ကိုပစ်မှတ်မှအစစ်အမှန်လမ်းကြောင်းကိုရယူပါ
$realPath = realpath($linkTarget);
} else {
// ဒါကြောင့်သင်္ကေတ link မဟုတ်ပါဘူးလျှင်,တိုက်ရိုက်လမ်းကြောင်းကိုတိုက်ရိုက်ရယူပါ
$realPath = realpath($filePath);
}
echo "ဖိုင်၏တကယ့်လမ်းကြောင်းဖြစ်သည်: " . $realPath;
?>
အထက်ပါကုဒ်၌:
is_link () ဖိုင်သည်သင်္ကေတ link ကိုဆုံးဖြတ်ရန် () ကိုသုံးပါ။
အကယ်. ၎င်းသည်သင်္ကေတ link ဖြစ်လျှင် Readlink () ကို ပထမ ဦး စွာအသုံးပြုပါ။
ထို့နောက် accounticolor link target ကိုရယူရန် realape () ကိုသုံးပါ။
အကယ်. ၎င်းသည်သင်္ကေတ link မဟုတ်လျှင်မှန်ကန်သောလမ်းကြောင်းကိုရရန် realitath () ကို တိုက်ရိုက်ခေါ်ဆိုပါ။
အကယ်. သင်သည် PHP ကုဒ်တွင်အဝေးထိန်းဖိုင်လိပ်စာကိုလုပ်ဆောင်ရန်လိုအပ်ပါက၎င်းလိပ်စာတွင် redirection သို့မဟုတ် symberolic link များပါ 0 င်သည်။
နမူနာကုဒ်:
<?php
$url = 'http://m66.net/path/to/symlink';
// ပထမ ဦး ဆုံးဆန်းစစ်ခြင်း URL,လမ်းကြောင်းအပိုင်းကိုရယူပါ
$parsedUrl = parse_url($url);
$path = $parsedUrl['path'] ?? '';
// ဤတွင်, တူညီသောလမ်းကြောင်းကိုဒေသအလိုက်တည်ရှိကြောင်းယူဆ,တရားသဖြင့်စီရင်ကြလော့
if (is_link($path)) {
$linkTarget = readlink($path);
$realPath = realpath($linkTarget);
} else {
$realPath = realpath($path);
}
echo "သက်ဆိုင်ရာဖိုင်အတွက်စစ်မှန်တဲ့လမ်းကြောင်းဖြစ်ပါတယ်: " . $realPath;
?>
အထက်ဖော်ပြပါကုဒ်သည် is_link () နှင့် realpath () ကို ပေါင်းစပ်ခြင်းအားဖြင့် URL တွင်လမ်းကြောင်းမှန်ပေါ်တွင်အမှန်တကယ်လမ်းကြောင်းမှန်ပေါ်မည်သို့ရရှိမည်ကိုပြသသည်။
Realpath () ပြန်လာသည့်လမ်းကြောင်းသည်တည်ရှိရမည်။ မဟုတ်ရင် မှားယွင်းစွာ ပြန်လာသည်။
Readlink () ကို သင်္ကေတအချင်းချင်းချိတ်ဆက်မှုများအတွက်သာအသုံးပြုနိုင်ပြီးသာမန်ဖိုင်များကိုမလုပ်ဆောင်နိုင်ပါ။
Remote URLs များအတွက် is_link () နှင့် realpath () အတွက်အသုံးမပြုပါနှင့် local file system တွင်အသုံးပြုရမည်။
အချုပ်အားဖြင့် is_link () နှင့် realpath () ကိုပေါင်းစပ်ခြင်းသည်ဖိုင်သည်သင်္ကေတအချိတ်အဆက်တစ်ခုဖြစ်ခြင်းရှိမရှိကိုပိုမိုတိကျစွာဆုံးဖြတ်နိုင်သည်။ ၎င်းသည်ဖိုင်စစ်ဆင်ရေး, ပြင်ဆင်ခြင်းစီမံခန့်ခွဲမှုနှင့်အခြားအခြေအနေများတွင်အလွန်လက်တွေ့ကျသည်။