လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> hash_hmac_file ကိုသုံးတဲ့အခါဘာလုပ်ရမလဲ။ သာမန်အမှားများနှင့်ဖြေရှင်းချက်

hash_hmac_file ကိုသုံးတဲ့အခါဘာလုပ်ရမလဲ။ သာမန်အမှားများနှင့်ဖြေရှင်းချက်

gitbox 2025-09-08

1 ။ ဖိုင်ခွင့်ပြုချက်မလုံလောက်မှုသည် function ကိုဖိုင်ကိုမဖတ်ရန်ဖြစ်သည်

hash_hmac_file () hash တန်ဖိုးကိုတွက်ချက်ရန်သတ်မှတ်ထားသောဖိုင်၏အကြောင်းအရာများကိုဖတ်ရန်လိုအပ်သည်။ ဖိုင်တွင်မလုံလောက်ပါက PHP သည်အမှားတစ်ခုသို့ပြန်ပို့လိမ့်မည်သို့မဟုတ်မှန်ကန်စွာ execute လုပ်ရန်ပျက်ကွက်ပါလိမ့်မည်။

အမှားလျင်မြန်စွာဥပမာ:

 <span><span><span class="hljs-built_in">Warning</span></span><span>: hash_hmac_file() [</span><span><span class="hljs-keyword">function</span></span><span>.hash-hmac-file]: open_basedir restriction </span><span><span class="hljs-keyword">in</span></span><span> effect. File(/</span><span><span class="hljs-type">path</span></span><span>/</span><span><span class="hljs-keyword">to</span></span><span>/file) </span><span><span class="hljs-keyword">is</span></span><span> </span><span><span class="hljs-keyword">not</span></span><span> </span><span><span class="hljs-keyword">within</span></span><span> the allowed path(s)
</span></span>

ဖြေရှင်းချက် -

  • ဖိုင်ကိုဖတ်ခွင့်ခွင့်ပြုချက်မှန်ကန်စွာသတ်မှတ်ထားကြောင်းသေချာပါစေ။ အောက်ပါ command ကိုအောက်ပါဖိုင်ခွင့်ပြုချက်စစ်ဆေးနိုင်သည်။

     <span><span><span class="hljs-built_in">ls</span></span><span> -l /path/to/file
    </span></span>

    အကယ်. ဖိုင်သည်ခွင့်ပြုချက်မဖတ်ပါက Chmod command မှတဆင့်ဖိုင်ခွင့်ပြုချက်ကိုသင်ပြုပြင်နိုင်သည်။

     <span><span><span class="hljs-built_in">chmod</span></span><span> 644 /path/to/file
    </span></span>
  • ထို့အပြင်သင်သည်သင်၏ code ကို shared hosting သို့မဟုတ် open_basedir က န့်သတ်ချက်များကိုအသုံးပြုသော shared hosting သို့မဟုတ်ပတ်ဝန်းကျင်တွင် run ပါကဖိုင်လမ်းကြောင်းသည်ခွင့်ပြုသည့်လမ်းညွှန်နယ်ပယ်အတွင်းရှိဖိုင်လမ်းကြောင်းကိုသေချာအောင်လုပ်ပါ။ ဤ setting ကို php.ini ကို ပြုပြင်ခြင်းသို့မဟုတ် system administrator ကိုဆက်သွယ်ခြင်းဖြင့်ချိန်ညှိနိုင်သည်။


2 ။ Open_basedir ကန့်သတ်ချက်သည်ဖိုင်များကိုအသုံးပြုခွင့်ပြုသည်

Open_basedir သည် PHP တွင်လုံခြုံရေးယန္တရားတစ်ခုဖြစ်သည်။ အကယ်. ဖိုင်သည် Open_basedir ကန့်သတ်ချက်အပြင်ဘက်တွင်ရှိပြီး hash_hmac_file () ဖိုင်ကိုမသုံးနိုင်ပါ။

အမှားလျင်မြန်စွာဥပမာ:

 <span><span><span class="hljs-built_in">Warning</span></span><span>: hash_hmac_file() [</span><span><span class="hljs-keyword">function</span></span><span>.hash-hmac-file]: open_basedir restriction </span><span><span class="hljs-keyword">in</span></span><span> effect. File(/</span><span><span class="hljs-type">path</span></span><span>/</span><span><span class="hljs-keyword">to</span></span><span>/file) </span><span><span class="hljs-keyword">is</span></span><span> </span><span><span class="hljs-keyword">not</span></span><span> </span><span><span class="hljs-keyword">within</span></span><span> the allowed path(s)
</span></span>

ဖြေရှင်းချက် -

  • PHPP.ini ရှိ Open_basedir ချိန်ညှိချက်များကိုကြည့်ပါ။

  • အကယ်. ၎င်းသည် php.ini ကိုမျှဝေထားသော hosting enviring enviring ရိယာကိုပြုပြင်မွမ်းမံနိုင်ပါကဖိုင်ကိုသင်ခွင့်ပြုထားသည့် directory ထဲသို့ပြောင်းရွှေ့ရန်ကြိုးစားနိုင်သည်, သို့မဟုတ် Open_basedir ချိန်ညှိချက်များကိုညှိရန် Host 0 န်ဆောင်မှုပေးသူကိုဆက်သွယ်ပါ။


3 ။ မမှန်ကန်သောဖိုင်လမ်းကြောင်း

ဖိုင်လမ်းကြောင်းအမှားများသည် hash_hmac_file () သည် အလုပ်မလုပ်ရသည့်အကြောင်းရင်းတစ်ခုဖြစ်သည်။ Path အမှားများသည်ဆွေမျိုးသို့မဟုတ်အကြွင်းမဲ့လမ်းကြောင်းလမ်းကြောင်းများမလျော်ကန်သော configuration များကြောင့်ဖြစ်ရခြင်းဖြစ်နိုင်သည်။

အမှားလျင်မြန်စွာဥပမာ:

 <span><span><span class="hljs-built_in">Warning</span></span><span>: hash_hmac_file(/invalid/</span><span><span class="hljs-type">path</span></span><span>/</span><span><span class="hljs-keyword">to</span></span><span>/file): failed </span><span><span class="hljs-keyword">to</span></span><span> </span><span><span class="hljs-keyword">open</span></span><span> stream: </span><span><span class="hljs-keyword">No</span></span><span> such file </span><span><span class="hljs-keyword">or</span></span><span> directory
</span></span>

ဖြေရှင်းချက် -

  • hash_hmac_file () သို့သွားသောလမ်းကြောင်းသည်တိကျမှန်ကန်ကြောင်းသေချာအောင်လုပ်ပါ။ အကယ်. သင်သည်ဆွေမျိုးလမ်းကြောင်းကိုအသုံးပြုပါကလက်ရှိအလုပ်လုပ်နေသော directory ( GetCwd (GetCwd () ) သည်ဖိုင်၏အမှန်တကယ်သိုလှောင်မှုတည်နေရာနှင့်ကိုက်ညီကြောင်းသေချာပါစေ။

  • လမ်းကြောင်းပြ problems နာများကိုရှောင်ရှားရန်ပကတိလမ်းကြောင်းများကိုအသုံးပြုပါ။ ဥပမာအားဖြင့်:

     <span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'/var/www/html/uploads/myfile.txt'</span></span><span>;
    </span><span><span class="hljs-variable">$secret_key</span></span><span> = </span><span><span class="hljs-string">'your-secret-key'</span></span><span>;
    </span><span><span class="hljs-variable">$hash</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_hmac_file</span></span><span>(</span><span><span class="hljs-string">'sha256'</span></span><span>, </span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-variable">$secret_key</span></span><span>);
    </span></span>

4 ။ ဖိုင်တည်ရှိရှိမရှိစစ်ဆေးပါ

hash_hmac_file () ကိုမခေါ်မီဖိုင်တည်ရှိမလားဆိုတာကိုအတည်ပြုတာကအကောင်းဆုံး။ အကယ်. ဖိုင်မရှိပါက hash_hmac_file () ကို တိုက်ရိုက်ခေါ်ဆိုခြင်းသည်အမှားတစ်ခုပေါ်ပေါက်လာလိမ့်မည်။

ဖြေရှင်းချက် -

  • ဖိုင်တည်ရှိမလားစစ်ဆေးရန် File_exists () function ကိုသုံးပါ။

     <span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'/path/to/file'</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_path</span></span><span>)) {
        </span><span><span class="hljs-variable">$hash</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_hmac_file</span></span><span>(</span><span><span class="hljs-string">'sha256'</span></span><span>, </span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-variable">$secret_key</span></span><span>);
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"File does not exist!"</span></span><span>;
    }
    </span></span>

5 ။ PHP လုပ်ငန်းစဉ်သည်လုံလောက်သောခွင့်ပြုချက်ရှိကြောင်းသေချာပါစေ

ဖိုင်၏ခွင့်ပြုချက်အပြင် PHP scripts ( www-data ကဲ့သို့သော) ကိုအသုံးပြုသူများသည်ဖိုင်အတွက်ခွင့်ပြုချက်အလုံအလောက်ရှိရန်လိုအပ်သည်။ hash_hmac_file () PHP လုပ်ငန်းစဉ်သည်ဖိုင်ကိုဖတ်ရန်ခွင့်ပြုချက်မရှိပါကလည်းပျက်ကွက်သည်။

ဖြေရှင်းချက် -

  • PHP လုပ်ငန်းစဉ်၏အသုံးပြုသူများသည်ခွင့်ပြုချက်ကိုဖိုင်သို့ဖတ်ရှုရန်သေချာပါစေ။ အောက်ပါ command ကိုအသုံးပြုပြီး PHP လုပ်ငန်းစဉ်များကိုအသုံးပြုသူများကိုစစ်ဆေးနိုင်သည်။

     <span><span>ps aux | grep php
    </span></span>
  • အကယ်. PHP process တွင်ခွင့်ပြုချက်မရှိပါကဖိုင်ပိုင်ရှင်ကို PHP process user သို့ပြောင်းရန် Chown command ကိုသုံးပါ။

     <span><span>sudo </span><span><span class="hljs-built_in">chown</span></span><span> www-data:www-data /path/to/file
    </span></span>

6 ။ heash_hmac_file ကို debugging လုပ်ခြင်းဖြင့်အမှားအယွင်းများ ()

အကယ်. အမည်မသိအမှားတစ်ခုဖြစ်ပါက PHP အမှားအစီရင်ခံခြင်းအားဖြင့်သင်ပြ issue နာကို debug လုပ်နိုင်သည်။ အောက်ပါကုဒ်ကို script ၏ထိပ်တွင်ထည့်သွင်းခြင်းသည်အမှားအယွင်းများကိုဖမ်းယူနိုင်ပြီးပြသနိုင်သည်။

 <span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span></span>

အမှားအယွင်းပြုခြင်းအားဖြင့် PHP သည်ပြ the နာကိုလျင်မြန်စွာရှာဖွေရန်ကူညီရန် PHP သည်အသေးစိတ်အမှားအချက်အလက်များကိုပြလိမ့်မည်။