PHP ပရိုဂရမ်တွင် ဖိုင် () function သည်အလွန်လက်တွေ့လုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်းသည်ဖိုင်၏လိုင်းတစ်ခုစီကိုပရိုဂရမ်တွင်နောက်ထပ်ပြုပြင်မွမ်းမံရန်လွယ်ကူချောမွေ့စေသည့် array ဒြပ်စင်တစ်ခုစီကိုဖတ်နိုင်သည်။ သို့သော်ဤလုပ်ဆောင်မှုကိုလွယ်ကူစွာလုပ်ဆောင်နိုင်သော်လည်းအသုံးပြုစဉ်အတွင်းဖိုင်ခွင့်ပြုချက်ပြ problems နာအချို့ကိုမကြာခဏတွေ့ဆုံလေ့ရှိပြီးဖိုင်အကြောင်းအရာကိုမှန်ကန်စွာဖတ်ရန်မဖြစ်နိုင်ပါ။ ဤဆောင်းပါးသည် ဖိုင် () function ကိုအသုံးပြုသောအခါဘုံဖိုင်ခွင့်ပြုချက်ပြ issues နာများကိုအသေးစိတ်ဆွေးနွေးပါမည်။
အသုံးအများဆုံးခွင့်ပြုချက်ပြ problems နာများထဲမှတစ်ခုမှာ PHP scripts များမှဖိုင်များကိုမဖတ်နိုင်သည့်အတွက်ဖြစ်သည်။ ၎င်းသည်များသောအားဖြင့်ဖိုင်ကိုဖတ်ရန်ခွင့်ပြုချက်မလုံလောက်ခြင်းကြောင့်ဖြစ်သည်။ Linux သို့မဟုတ် Unix ကဲ့သို့သောစနစ်များတွင်ဖိုင်ခွင့်ပြုချက်များကို chmod command မှတဆင့်စီမံခန့်ခွဲနိုင်သည်။
ဘုံသရုပ်ဖော်ပုံများ:
PHP အမှား သတိပေးချက် - ဖိုင် () [function.file] - စမ်းချောင်းကိုဖွင့်ရန်ပျက်ကွက်ခြင်း - ထိုကဲ့သို့သောဖိုင်သို့မဟုတ်လမ်းညွှန်မရှိပါ ။
ဖိုင်တည်ရှိသော်လည်း PHP သည်၎င်း၏ contents များကိုမဖတ်နိုင်သေးပါ။
ဖြေရှင်းချက် -
ဖိုင်တည်ရှိပြီးလမ်းကြောင်းမှန်ပေါ်သေချာအောင်လုပ်ပါ။
ဖိုင်၏ဖတ်ခွင့်ခွင့်ပြုချက်များကိုစစ်ဆေးပြီး PHP သို့ဖတ်ရန်ဖိုင်၏ခွင့်ပြုချက်များကိုပြုပြင်ရန် chmod ကို သုံးပါ။ အောက်ပါ command များကိုသုံးနိုင်သည် -
<span><span><span class="hljs-built_in">chmod</span></span><span> 644 /path/to/your/file
</span></span>၎င်းသည်ခွင့်ပြုချက်များကိုဖတ်ရန်နှင့်ရေးရန်ခွင့်ပြုချက်ကိုဖတ်ရန်နှင့်ရေးရန်ခွင့်ပြုချက်ကိုပေးလိမ့်မည်။
အချို့ဖြစ်ရပ်များတွင်ဖိုင်တွင်နေထိုင်သောလမ်းညွှန်သည်ခွင့်ပြုချက်အလုံအလောက်မရှိ, ဖိုင်ကိုလက်လှမ်းမမှီနိုင်ပါ။ ဖိုင်ကိုယ်တိုင်ကမှန်ကန်သောခွင့်ပြုချက်များရှိနေသော်လည်း PHP သည် directory ခွင့်ပြုချက်ပြ issues နာများကြောင့်ဖိုင်ကိုဖတ်ရန်ပျက်ကွက်နေ ဦး မည်ဖြစ်သည်။
ဘုံသရုပ်ဖော်ပုံများ:
အမှား သတိပေးချက် - ဖိုင် () [function.file] - Stream ကိုဖွင့်ရန်ပျက်ကွက်: ခွင့်ပြုချက်ငြင်းပယ်ခဲ့သည် ။
ဖြေရှင်းချက် -
PHP သည်လမ်းညွှန်သို့ဝင်ရောက်ရန်သေချာပါစေ။ အောက်ဖော်ပြပါ command ကို သုံး. directory သို့သင့်လျော်သောဖတ်ခွင့်ခွင့်ပြုချက်ကိုသင်ထည့်နိုင်သည်။
<span><span><span class="hljs-built_in">chmod</span></span><span> 755 /path/to/directory
</span></span>၎င်းသည်စာဖတ်ခြင်း, ရေးခြင်းနှင့်ခွင့်ပြုချက်ဖြင့်လမ်းညွှန်ပိုင်ရှင်များနှင့်ခွင့်ပြုချက်ကိုဖတ်ရန်နှင့် execute လုပ်ထားသောအခြားအသုံးပြုသူများကိုပေးလိမ့်မည်။
PHP ၏အသုံးပြုသူများကိုအသုံးပြုနေသောအသုံးပြုသူ (ဥပမာ www-data သို့မဟုတ် apache ) ကိုအသုံးပြုရန်ခွင့်ပြုချက်ရှိမရှိကိုလည်းသင်စစ်ဆေးနိုင်သည်။ အကယ်. သင်မသေချာပါက directory ၏ပိုင်ရှင်နှင့်ခွင့်ပြုချက်များကိုအောက်ပါ command မှတဆင့်ကြည့်ရှုနိုင်သည်။
<span><span><span class="hljs-built_in">ls</span></span><span> -l /path/to/directory
</span></span>Selinux သို့မဟုတ် ApparMormor ကဲ့သို့သောလုံခြုံရေးဆိုင်ရာ module များအသုံးပြုခြင်းကဲ့သို့သော Linux ဖြန့်ဖြူးခြင်းများတွင်ဖိုင်တွဲ၏ခွင့်ပြုချက်သည် OK ကိုကြည့်ရှုနေသည့်တိုင်ဖိုင်ကိုကြည့်ရှုနိုင်ပြီးဖိုင်ကို 0 င်ရောက်နိုင်ဆဲဖြစ်သည်။
ဘုံသရုပ်ဖော်ပုံများ:
ချို့ယွင်းချက် သတိပေးချက် - ဖိုင် () [function.file] - Stream ကိုဖွင့်ရန်မအောင်မြင်ပါ။ ခွင့်ပြုချက်ကိုငြင်းပယ်ခြင်း ,
ဖြေရှင်းချက် -
Selinux ကိုခေတ္တပိတ်ထားရန် Selinux ကိုခေတ္တပိတ်ထားပါ။
<span><span>setenforce 0
</span></span>Selinux ကို disable လုပ်ပြီးနောက်ပြ problem နာကိုဖြေရှင်းနိုင်ပါက PHP ကိုဖိုင်ကိုရယူရန် Selinux မူဝါဒကိုညှိရန်စဉ်းစားပါ။ Selinux ကိုအမြဲတမ်းပိတ်ခြင်းသည်စနစ်လုံခြုံရေးကိုလျော့နည်းစေသောကြောင့်အကြံပြုထားသောအလေ့အကျင့်မဟုတ်ပါ။
Selinux အမှားသတင်းအချက်အလက်များကိုကြည့်ရှုရန် စာရင်းစစ် ကိရိယာကို သုံး. Prompts နှင့်အညီစည်းကမ်းချက်များကိုပြုပြင်ရန်စည်းမျဉ်းများကိုပြင်ဆင်ရန်
<span><span>audit2allow -w -a
</span></span>တစ်ခါတစ်ရံ PHP configuration ကိုယ်တိုင်ကဖိုင်အမျိုးအစားကိုကန့်သတ်နိုင်သည်။ ဥပမာအားဖြင့်, open_basedir configuration သည် PHP ကိုသတ်သတ်မှတ်မှတ်လမ်းညွှန်များကိုသာ 0 င်ရောက်ခြင်းကိုသာကန့်သတ်ထားလိမ့်မည်။
ဘုံသရုပ်ဖော်ပုံများ:
အမှားတစ်ခုသတင်းပို့သည်။ သတိပေးချက် - ဖိုင် () [) [function.file] - Stream ဖွင့်ရန်ပျက်ကွက်ခြင်း - စစ်ဆင်ရေးကိုခွင့်မပြုပါ ။
ဖြေရှင်းချက် -
PHP.INI Configuration ဖိုင်တွင် Open_basedir ချိန်ညှိချက်များကိုစစ်ဆေးပါ။ ဖိုင်တည်ရှိရာနေရာကိုသေချာအောင်လုပ်ပါ။ လက်ရှိ Open_basedir ချိန်ညှိချက်များကိုအောက်ပါ command မှတဆင့်ကြည့်ရှုနိုင်သည်။
<span><span><span class="hljs-title function_ invoke__">phpinfo</span></span><span>();
</span></span>လိုအပ်ပါက php php အားပိုမိုကောင်းမွန်သောလမ်းညွှန်များကိုခွင့်ပြုရန် Open_basedir ၏တန်ဖိုးကိုယာယီပြင်ဆင်နိုင်သည်။
<span><span><span class="hljs-attr">open_basedir</span></span><span> = /path/to/allowed/directory
</span></span>သို့မဟုတ် php code တွင် dynamically ပြုပြင်ရန် ini_set () ကို သုံးပါ။
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'open_basedir'</span></span><span>, </span><span><span class="hljs-string">'/path/to/allowed/directory'</span></span><span>);
</span></span>အကယ်. ဖိုင်ကိုအခြားလုပ်ငန်းစဉ်တစ်ခုဖြင့်သော့ခတ်ထားလျှင် PHP သည်ဖိုင်ကိုမဖတ်နိုင်ပါ။ အထူးသဖြင့်ဖိုင်တစ်ခုသို့မဟုတ် scripts မျိုးစုံကိုတစ်ချိန်တည်းတွင်ဖိုင်တစ်ခု 0 င်ရောက်သောအခါဖိုင်ပေါင်းစုံသို့မဟုတ် multi-threaded ပတ်ဝန်းကျင်တွင်ပြုလုပ်လေ့ရှိသည်။
ဘုံသရုပ်ဖော်ပုံများ:
PHP သည်ဖိုင်ကိုမဖတ်နိုင်ပါ, သို့မဟုတ် contents များသည်မပြည့်စုံပါ။
ဖြေရှင်းချက် -
အခြားမည်သည့်ဖြစ်စဉ်ကိုမျှဖိုင်ကိုမကြည့်ပါနှင့်။ ဖြစ်နိုင်လျှင်တစ်ချိန်တည်းတွင်တူညီသောဖိုင်ကို 0 င်ရောက်ခြင်းလုပ်ငန်းစဉ်များသို့မဟုတ် scripts မျိုးစုံကိုရှောင်ပါ။
အကယ်. ဖိုင်ကိုတစ်ချိန်တည်းတွင်လုပ်ငန်းစဉ်မျိုးစုံဖြင့်ကြည့်ရှုနိုင်ပါကဖိုင်သော့ခတ်ကိရိယာကို အသုံးပြု. စဉ်းစားပါ။ PHP သည် function () function ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်၎င်းတို့ကိုမသွားမီဖိုင်များကိုသော့ခတ်နိုင်ပြီးဖိုင်များကိုအခြားလုပ်ငန်းစဉ်များက 0 င်ရောက်စွက်ဖက်ခြင်းမပြုနိုင်ပါ။
နောက်ဆုံးတွင်ဖိုင်စနစ်နှင့်ပြ problems နာများရှိပါက (ထိုကဲ့သို့သောဖိုင်စနစ်၏အကျင့်ပျက်ခြစားမှုစသဖြင့်) တွင် PHP သည်ဖိုင်ကိုမဖတ်နိုင်ပါ။
ဘုံသရုပ်ဖော်ပုံများ:
အမှား သတိပေးချက် - ဖိုင် () [) [function.file] - Stream ကိုဖွင့်ရန်မအောင်မြင်ပါ ။
ဖြေရှင်းချက် -
Disk နေရာသည်လုံလောက်မှုရှိမရှိစစ်ဆေးပါ။ ကြည့်ရှုရန်အောက်ပါ command ကိုသုံးပါ။
<span><span><span class="hljs-built_in">df</span></span><span> -h
</span></span>အကယ်. disk space သည်အပြည့်အဝ, အသုံးမကျသောဖိုင်များသို့မဟုတ် disk space ကိုတိုးချဲ့ပါက။
ဖိုင်စနစ်ကိုဖတ်ရန်တစ်ခုတည်းသော mode တွင်မတပ်ဆင်ထားကြောင်းအတည်ပြုရန်, ၎င်းကိုအောက်ပါ command မှတဆင့်ကြည့်ရှုနိုင်သည်။
<span><span>mount | grep </span><span><span class="hljs-string">'/path/to/file'</span></span><span>
</span></span>PHP ၏ ဖိုင် () function ကိုအသုံးပြုသောအခါခွင့်ပြုချက်ပြ issues နာများသည်ဖိုင်များကိုမဖတ်နိုင်သောအဘယ်ကြောင့်ရသည့်အကြောင်းရင်းတစ်ခုဖြစ်သည်။ ဤပြ issues နာများကိုများသောအားဖြင့်ဖိုင်နှင့် directory perments များ, Selinux သို့မဟုတ် ApparMor Configuration, PPP configuration နှင့် file locking လုပ်ခြင်းဖြင့်ဖြေရှင်းခြင်းဖြင့်ဖြေရှင်းလေ့ရှိသည်။ PHP scripts သည်လုံလောက်သော 0 င်ရောက်နိုင်ခြင်းနှင့်ဖိုင်စနစ်နှင့်ပြ problems နာမရှိပါ။ ဖိုင်စနစ်နှင့်ပြ problems နာမရှိပါ။