PHP တွင် FPASSTHRU () function သည်ပုံမှန် output ကိုစီးဆင်းမှုစီးဆင်းမှုသို့တိုက်ရိုက်ဖိုင်ညွှန်း (အရင်းအမြစ်) မှထောက်ပြသည်။ ဤလုပ်ဆောင်မှုသည်များသောအားဖြင့်ဖိုင်များ (ဓာတ်ပုံများ, အသံ, ဖိုင်များ) ကိုဒေါင်းလုပ်လုပ်ရန် browser သို့ (ဓာတ်ပုံများ, အသံများသို့မဟုတ်စာသားများ) သို့ကူးယူရန်အသုံးပြုသည်။ သို့သော်၎င်းတွင်၎င်း၏အစွမ်းထက်သောလုပ်ဆောင်မှုများရှိသော်လည်းဖိုင်ခွင့်ပြုချက်ကိုစနစ်တကျမသတ်မှတ်ပါက FPASSTHRU () ကို ပုံမှန်ကွပ်မျက်ခြင်းမှကာကွယ်ရန်ဖိုင်များ 0 င်ရောက်မှုကိုဖြစ်စေနိုင်သည်။ ဤဆောင်းပါးသည်ဤပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်ကိုလေ့လာပြီး FPASSTHRU () သည် ချောချောမွေ့မွေ့လည်ပတ်နိုင်ကြောင်းလေ့လာပါလိမ့်မည်။
Unix / Linux Systems တွင်ဖိုင်တစ်ခုစီနှင့် directory တစ်ခုစီသည်မည်သည့်အသုံးပြုသူများသို့မဟုတ်အသုံးပြုသူများအုပ်စုသည်ဖိုင်ကိုဖတ်နိုင်, ဘုံခွင့်ပြုချက်ဆက်တင်များမှာအောက်ပါအတိုင်းဖြစ်သည် -
R (ဖတ်ပါ) - ဖိုင်၏အကြောင်းအရာများကိုဖတ်ရှုနိုင်သည်ကိုဆိုလိုသည်။
W (ရေးသည်) - ဖိုင်အကြောင်းအရာကိုပြုပြင်နိုင်သည်ဟုဆိုလိုသည်။
X (Execute) - executable file တစ်ခု (scripts များနှင့်ပရိုဂရမ်ဖိုင်များအတွက်အရေးကြီးသည်) ကိုဆိုလိုသည်။
ဖိုင်ခွင့်ပြုချက်များကိုလည်းမတူညီသောသုံးစွဲသူများအပေါ်မတူညီသောထိန်းချုပ်မှုအမျိုးမျိုးကိုလုပ်ဆောင်ရန်စီစဉ်ထားသည် ။ PHP scripts သည် Apache ကဲ့သို့သောဝက်ဘ်ဆာဗာတွင်လည်ပတ်နေသော PHP scripts အတွက်ဖိုင်ကိုဖတ်ရန်သင့်လျော်သောခွင့်ပြုချက်ရှိစေရန်သေချာစေရန်အရေးကြီးသည်။
FPASSTHRU () function သည် file contents များကိုဖတ်ပြီးဖိုင်ညွှန်ပြခြင်းဖြင့်ထုတ်ပေးလိမ့်မည်။ အကယ်. ဖိုင်ခွင့်ပြုချက်များကိုစနစ်တကျမသတ်မှတ်ပါက PHP သည်ဖိုင်ကို 0 င်ရောက်ခြင်းမပြုနိုင်ပါ။ အသုံးများသောအမှားများတွင် -
ဖိုင်မရှိပါ - ဖိုင်လမ်းကြောင်းသည်မမှန်ကန်ပါ။ သို့မဟုတ်ဖိုင်မရှိပါ။
ခွင့်ပြုချက်မလုံလောက်ပါ ။ PHP script ကိုအသုံးပြုသောအသုံးပြုသူသည်ဖိုင်ကိုဖတ်ရန်ခွင့်ပြုချက်မရှိပါ။
ခွင့်မပြုသည့်ဖိုင်များ - အချို့သောဖိုင်များသည် Execute ခွင့်ပြုချက်လိုအပ်နိုင်ပြီးသင့်လျော်သောကွပ်မျက်ခွင့်ပြုချက်မရှိဘဲဖတ်။ မရပါ။
FPASSTHRU () function ကိုအောင်မြင်စွာဖတ်နိုင်အောင်ပြုလုပ်နိုင်ရန်နှင့်ဖိုင်အကြောင်းအရာကိုအောင်မြင်စွာဖတ်ရှုနိုင်အောင်ပြုလုပ်နိုင်ရန်အတွက်ဖိုင်၏ခွင့်ပြုချက်များကိုမှန်ကန်စွာသတ်မှတ်ရန်လိုအပ်သည်။ ဤတွင်အချို့သောဘုံဖြေရှင်းချက်များမှာ -
FPASSTHRU ကိုမသုံးမီ () , ဖိုင်လမ်းကြောင်းမှန်ကန်မှုကို ဦး စွာသင်ပထမ ဦး စွာသေချာအောင်လုပ်ရမည်။ ဖိုင်လမ်းကြောင်းမှားယွင်းနေပါက PHP သည်ပစ်မှတ်ထားဖိုင်ကိုရှာမတွေ့နိုင်ပါ။ ဖိုင်သည်အောက်ပါကုဒ်များမှတဆင့်တည်ရှိခြင်းရှိမရှိစစ်ဆေးနိုင်သည်။
<span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/file.txt'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'ဖိုင်မတည်ရှိပါဘူး'</span></span><span>);
}
</span></span>
PHP scripts သည်ဖိုင်သို့ခွင့်ပြုချက်ကိုဖတ်ရန်လိုအပ်သည်။ PHP လုပ်ငန်းစဉ်ကိုဖတ်ရန်ဖိုင်၏ခွင့်ပြုချက်ကိုပြုပြင်ရန် chmod command ကိုသုံးပါ။ ၎င်းကိုများသောအားဖြင့် 644 (I.E. အသုံးပြုသူသည်ခွင့်ပြုချက်များကိုဖတ်ပြီးရေးဆွဲခွင့်ပြုထားသည်။
<span><span><span class="hljs-built_in">chmod</span></span><span> 644 /path/to/your/file.txt
</span></span>
အကယ်. ဖိုင်သည်အသုံးပြုသူတစ် ဦး ( 0 က်ဘ်ဆိုက်ဆာဗာအသုံးပြုသူ web-data ကဲ့သို့သောအချက်အလက်များကဲ့သို့သော) တွင်ပါ 0 င်ပါက, ဖိုင်ပိုင်ရှင်ကိုပြုပြင်ရန် Chown command ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-built_in">chown</span></span><span> www-data:www-data /path/to/your/file.txt
</span></span>
FPASSTHRU () ကို မပြုလုပ်မီဖိုင်ကိုဖတ်နိုင်မလားစစ်ဆေးရန် is_readable () function ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">'rb'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fpassthru</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'ဖိုင်မဖတ်နိုင်သောဖိုင်မရှိပါ'</span></span><span>);
}
</span></span>
0 က်ဘ်ဆာဗာများ (apache သို့မဟုတ် nginx ကဲ့သို့သော) PHP scripts များကို run ရန်အသုံးပြုသူများကိုအသုံးပြုသည်။ အသုံးပြုသူအမည် PS AUX မှကြည့်ရှုနိုင်သည် Grep Apache သို့မဟုတ် PS AUX | Grep Nginx command ကို။ အသုံးပြုသူသည်ဖိုင်အတွက်သင့်လျော်သောခွင့်ပြုချက်ရှိကြောင်းသေချာပါစေ။ ဖိုင်ခွင့်ပြုချက်များကိုဤအသုံးပြုသူမှဖတ်ရန်သတ်မှတ်နိုင်သည်။
<span><span><span class="hljs-built_in">chmod</span></span><span> 755 /path/to/your/file.txt
</span></span>
ဆာဗာပေါ်ရှိဝက်ဘ်ဆိုက် 0 န်ဆောင်မှုများကိုအသုံးပြုသောအခါသင်သည် root အသုံးပြုသူများကိုအသုံးပြုခြင်းကိုရှောင်ကြဉ်သင့်သည်။ အကယ်. PHP script ကို root အသုံးပြုသူအဖြစ်ကွပ်မျက်ခံရပါက၎င်းသည်ခွင့်ပြုချက်ယိုစိမ့်မှုအန္တရာယ်ရှိနိုင်သည်။ သင့်လျော်သောအသုံးပြုသူအုပ်စုများနှင့်ခွင့်ပြုချက်များကိုသတ်မှတ်ခြင်းအားဖြင့် PHP scripts သည်အနည်းဆုံးခွင့်ပြုချက်ဖြင့်အသုံးပြုနိုင်ပြီးလုံခြုံရေးအားနည်းချက်များကိုရှောင်ရှားနိုင်ပါ။
အကယ်. ဖိုင်တည်ရှိရာလမ်းညွှန်သည်ခွင့်ပြုချက်မဖတ်ပါက PHP သည်စာဖတ်ခြင်းအတွက်ဖိုင်ကိုဖွင့ ်. မရပါ။ ထို့ကြောင့်ဖိုင်၏အပြင် directory permissions များကိုလည်းဖတ်ရန်လိုအပ်သည် (များသောအားဖြင့် 755 အထိ)
<span><span><span class="hljs-built_in">chmod</span></span><span> 755 /path/to/your/directory
</span></span>
ဖိုင်ကြီးများနှင့်ဆက်ဆံရာတွင် FPASSTHRU () function သည်အကန့်အသတ်အချို့ကိုကြုံတွေ့ရနိုင်သည်။ PHP configuration တွင်မှတ်ဉာဏ်ကန့်သတ်ချက်သည်အလွန်မြင့်မားပြီးဖိုင်များသည်မှန်ကန်သောခွင့်ပြုချက်များရှိသည်ကိုသေချာအောင်လုပ်ပါ။
PHPP.INI တွင်အောက်ပါချိန်ညှိချက်များကိုချိန်ညှိနိုင်သည်။
<span><span><span class="hljs-attr">memory_limit</span></span><span> = </span><span><span class="hljs-number">256</span></span><span>M </span><span><span class="hljs-comment">; မှတ်ဉာဏ်ကန့်သတ်တိုးမြှင့်</span></span><span>
</span><span><span class="hljs-attr">max_execution_time</span></span><span> = </span><span><span class="hljs-number">300</span></span><span> </span><span><span class="hljs-comment">; အများဆုံးကွပ်မျက်အချိန်သတ်မှတ်ပါ</span></span><span>
</span></span>
FPASSTHRU () ဖိုင်များကိုလုပ်ဆောင်ရန်အတွက်ဖိုင်များသည်ဖိုင်လမ်းကြောင်းအတွက်အမြဲတမ်းသေချာအောင်လုပ်ပါ။ သုံးစွဲသူများသည် traversal တိုက်ခိုက်မှုများကိုရှောင်ကြဉ်ရန်တင်းကြပ်စွာအတည်ပြုမထားသည့်ဖိုင်လမ်းကြောင်းများကိုမထည့်သွင်းရန်ခွင့်မပြုပါနှင့်။ လုံခြုံရေးအန္တရာယ်များကိုလျှော့ချရန်မသန့်ရှင်းသောဖိုင်လမ်းကြောင်းများသို့မဟုတ်အသုံးပြုသူထည့်သွင်းမှုကိုရှောင်ရှားသင့်သည်။
<span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">realpath</span></span><span>(</span><span><span class="hljs-string">'/path/to/your/file.txt'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">'/path/to/your/'</span></span><span>) !== </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'တရားမဝင်ဖိုင်အိတ်'</span></span><span>);
}
</span></span>
FPASSTHRU () function ကိုအသုံးပြုသောအခါဖိုင်ခွင့်ပြုချက် setting သည်အလွန်အရေးကြီးသည်။ ဖိုင်များတည်ရှိနိုင်ကြောင်းသေချာအောင်လုပ်ပါ။ PHP script သည်ဤဖိုင်များကို 0 င်ရောက်ရန် PHP script သည်လုံလောက်သောခွင့်ပြုချက်ရှိသည်။ ဖိုင်လမ်းကြောင်းများကိုစစ်ဆေးခြင်း, ခွင့်ပြုချက်ကိုချိန်ညှိခြင်းနှင့် PHP ပတ်ဝန်းကျင်ကို configure လုပ်ခြင်းအားဖြင့်သင်သည်ဖိုင်အချို့၏ပျက်ကွက်မှုများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ ထို့အပြင်လုံခြုံရေးကိုဂရုပြုပါနှင့်မလုံခြုံသောလမ်းကြောင်းထည့်သွင်းမှုကိုရှောင်ကြဉ်ပါ။
ဤအစီအမံများမှတဆင့် PHP ရှိ FPASSTHRU () function သည်ချောချောမွေ့မွေ့ဖတ်ခြင်းနှင့် output file content ကိုသေချာစွာဖတ်နိုင်သည်။