File System-Related Operations များကိုကိုင်တွယ်ရန် PHP ကိုအသုံးပြုသောအခါ GetMyinode () function သည်အလွန်လက်တွေ့ကျသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းကို operating system မှဖိုင်တွင်သတ်မှတ်ထားသောထူးခြားသောအမှတ်အသားဖြစ်သောအခြား script တည်ရှိရာဖိုင်၏ inode နံပါတ်ကိုပြန်ပို့ရန်အသုံးပြုသည်။ သို့သော်အချို့သောပတ်ဝန်းကျင်တွင် (သို့) အချို့သောအခြေအနေများတွင် GetMyinode () သည် 0 င် သို့မဟုတ် မှားယွင်းစွာ ပြန်လာနိုင်သည်။ ဤဆောင်းပါးသည်ဤပုံမှန်မဟုတ်သောအကြောင်းရင်းများကိုလေ့လာသုံးသပ်ပြီးသက်ဆိုင်ရာပြ esh နာဖြေရှင်းခြင်းနှင့်ဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
GetMyInode () သည် အမှန်တကယ် script file ၏ inode နံပါတ်ကိုပြန်ပို့သော Stat (__ file__) ၏ encapsulations သည်အမှန်တကယ်ဖြစ်သည်။ ပုံမှန်အသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
<?php
echo getmyinode();
?>
အကယ်. ပြန်လာသောပုံမှန် Non-Zero Non-Zero OneGer ဆိုလျှင်၎င်းသည် function ကိုမှန်ကန်စွာရရှိနိုင်ပါသည်။ သို့သော်ပြန်လာ 0 သို့မဟုတ် မှားယွင်းသော အရာကစစ်ဆေးရန်လိုအပ်သည့်ပြ a နာတစ်ခုရှိသည်။
PHP Runtime ပတ်ဝန်းကျင်တွင်အချို့သော (ဥပမာ CGI Mode ကဲ့သို့အချို့သောဝေငှခြင်း) သည် file system metadata ကိုအကန့်အသတ်ဖြင့်မဖတ်နိုင်ပါ။
ဖြေရှင်းချက် -
Phpinfo () ၏ output ကိုစစ်ဆေးပြီးစစ်ဆင်ရေး mode ကိုအတည်ပြုပါ။
သင်သည် CGI-FCGI (သို့) ကွန်တိန်နာကဲ့သို့သောကွန်တိန်နာအဖြစ် (သို့) ကွန်တိန်နာကဲ့သို့သောကွန်တိန်နာ) ကိုအသုံးပြုနေပါက CLI mode သို့ပြောင်းရန်သို့မဟုတ်ဖိုင်အသံအတိုးအကျယ်ကိုပြန်ဖွင့်ရန်ကြိုးစားပါ။
Open_basedir Setting သည်လက်ရှိ script ကိုကိုယ်ပိုင်လမ်းကြောင်းသို့ 0 င်ရောက်ခြင်းကိုကန့်သတ်မထားကြောင်းအတည်ပြုပါ။
<?php
phpinfo();
?>
Open_basedir entry သည်ဗလာသို့မဟုတ်လက်ရှိဖိုင်လမ်းညွှန်များပါ 0 င်သည်ကိုရှာပါ။
အချို့သောကွန်ယက်ဖိုင်စနစ်များ (ဥပမာ NFS, SMB) သို့မဟုတ် virtual file systems (ဥပမာ - 0 င်းဒိုးရှိ Fat32 ကဲ့သို့သော Fat32 ကဲ့သို့သောဖိုင်စနစ်များ) သည် meta အချက်အလက်များကိုကြည့်ရှုရန်ခွင့်ပြုချက်မရှိပါ။
ဖြေရှင်းချက် -
ဖိုင်များကိုပုံမှန် Linux ဖိုင်စနစ် (ထိုကဲ့သို့သော ext4 ကဲ့သို့သော ext4 ကဲ့သို့) သို့ပြောင်းရန်ကြိုးစားပါ။
Meta အချက်အလက်များကိုပုံမှန် 0 င်ရောက်နိုင်ခြင်းရှိမရှိစစ်ဆေးရန် stat (__ file__) ကို သုံးပါ။
<?php
print_r(stat(__FILE__));
?>
အကယ်. မှားယွင်းစွာ ပြန်ရောက်လာပါကနောက်ခံဖိုင်စနစ်သို့မဟုတ်ခွင့်ပြုချက်များနှင့်ပြ a နာရှိကြောင်းဖော်ပြသည်။
ဇာတ်ညွှန်းသည်ဒေသတွင်းလမ်းကြောင်းမှတစ်ဆင့်မလည်ပတ်ပါက ('http://gitbox.net/path/tath/tatho/file.php' ') အနေဖြင့်အဝေးမှမိတ်ဆက်ခြင်းကို (httpp://gitbox.path/tiple/file.php') , PHP သည် local file attribute များကိုအသိအမှတ်ပြုလိမ့်မည်မဟုတ်ပါ ။
ဖြေရှင်းချက် -
PHP ဖိုင်များအပါအ 0 င် URLs များမှတဆင့်ရှောင်ကြဉ်ပါ။
အကယ်. ၎င်းကို URL မှတစ်ဆင့်မိတ်ဆက်ရမည်ဆိုပါက MD5_File () သို့မဟုတ် fileinode () ကဲ့သို့သောဖိုင်များကိုဖော်ထုတ်ရန်အခြားယန္တရားများကိုအသုံးပြုရန်စဉ်းစားပါ။
အချို့သောဆာဗာများသည်ပုံဆောင်ဆက်သွယ်မှုများသို့မဟုတ် virtual paths များမှတဆင့်အမှန်တကယ်လမ်းကြောင်းကိုမြေပုံဆွဲထားသည်။ __file__ ပြန်လာသည့်လမ်းကြောင်းသည်ပုံမှန်ဖိုင်စနစ်လမ်းကြောင်းမဟုတ်ပါ,
ဖြေရှင်းချက် -
အစစ်အမှန်ရုပ်ပိုင်းဆိုင်ရာလမ်းကြောင်းကိုအတင်းရန် realitath (__ file__) ကို သုံးပါ။
<?php
echo fileinode(realpath(__FILE__));
?>
GetMyinode () ဖိုင်တွဲ (realippath (__ file__)) ဖြင့်အစားထိုးရန်ပိုမိုလုံခြုံသည်။
အကယ် . GetMyinode () သည်သင်၏လည်ပတ်သောပတ် 0 န်းကျင်တွင်ယုံကြည်စိတ်ချရသောမဟုတ်ကြောင်းသင်တွေ့ရှိပါကအောက်ပါရွေးချယ်မှုကိုစဉ်းစားပါ။
<?php
$inode = @fileinode(__FILE__);
if ($inode === false) {
// နောက်ထပ်ကြိုးစားပါ
$inode = @fileinode(realpath(__FILE__));
}
echo $inode;
?>
တနည်းအားဖြင့်ဖိုင်အကျဉ်းချုပ်ကိုအခြားရွေးချယ်စရာအမှတ်အသားအဖြစ်သုံးပါ။
<?php
echo md5_file(__FILE__);
?>
၎င်းသည် inode ၏ထူးခြားမှုကို အစားထိုး. မရပါကဖိုင်ပြောင်းလဲခြင်းရှာဖွေခြင်းကဲ့သို့သောရည်ရွယ်ချက်များအတွက်လက်ခံနိုင်သောဖြေရှင်းနည်းလည်းဖြစ်သည်။
GetMyInode () သည် 0 င် သို့မဟုတ် မှားယွင်းသော 0 င်သည်,
PHP ပတ်ဝန်းကျင်ကန့်သတ်ချက်များ (Open_basedir ကဲ့သို့);
ဖိုင်စနစ်သည်ပံ့ပိုးမှုမရှိသေးပါသို့မဟုတ်ခွင့်ပြုချက်မလုံလောက်ပါ။
urls မှတစ်ဆင့် scripts များကိုကြည့်ပါ။
ဖိုင်လမ်းကြောင်းကိုသင်္ကေတ link ဖြင့်ပြုပြင်သည်။
ဤစုံစမ်းစစ်ဆေးရေးလမ်းညွှန်များအရပြ problems နာများကိုလျင်မြန်စွာဖော်ထုတ်နိုင်ပြီးအခြားရွေးချယ်စရာဖြေရှင်းနည်းများကိုဖော်ထုတ်နိုင်သည်။ ထုတ်လုပ်မှုပတ် 0 န်းကျင်များတွင်အဘယ်ကြောင့်ဆိုသော်သတိထားခြင်းဖြင့်မှီခိုအားထားရန်နှင့်သဟဇာတဖြစ်သောဖိုင်မှတ်ပုံတင်နည်းစနစ်များကိုအသုံးပြုခြင်းကို ဦး စားပေးရန်အကြံပြုသည်။