ဒေတာဘေ့စ်အမှားကိုင်တွယ်ခြင်းသည် PHP application များဖွံ့ဖြိုးတိုးတက်ရေး၏မလွှဲမရှောင်သာအစိတ်အပိုင်းဖြစ်သည်။ ပိုမိုကောင်းမွန်သောဖြေရှင်းရန်နှင့် Debug ပြ problems နာများကိုပိုမိုကောင်းမွန်စေရန်အတွက်ဒေတာဘေ့စ်အမှားများကိုအချိန်မီမှတ်တမ်းတင်ရန်အလွန်လိုအပ်သည်။ PHP တွင် MySQLI extension သည် MySQLI :: $ error :: database connection တွင်နောက်ဆုံးအမှားမက်ဆေ့ခ်ျကိုရရန်ခွင့်ပြုထားသောဒေါ်လာအမှား တစ်ခုပေးသည်။ PHP ၏ Built-in Errorger_log () function ကိုပေါင်းစပ်ခြင်း, အမှားအချက်အလက်များကိုမှတ်တမ်းဖိုင်များတွင်မှတ်တမ်းတင်နိုင်ပြီး developer များထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ပြ problems နာများကိုရှာဖွေရန်ကူညီနိုင်သည်။
MySQLI :: error_log (error_log) ကို MySQL ဒေတာဘေ့စ်တွင်အမှားအယွင်းများရိုက်ကူးရန်နှင့် developer များရှာဖွေတွေ့ရှိနိုင်ရန်အတွက်သတ်မှတ်ထားသောဖိုင်ကိုသိမ်းဆည်းရန်ဤဆောင်းပါးသည်ဤဆောင်းပါးသည် MySQLIS_LOG () ကို သတ်မှတ်ရန်သတ်မှတ်ထားသောဖိုင်ထဲရှိအမှားမှတ်တမ်းကိုသိမ်းဆည်းရန်မိတ်ဆက်ပေးလိမ့်မည်။
MySQLI extension ကို သုံး. MySQL ဒေတာဘေ့စ်တစ်ခုနှင့်ချိတ်ဆက်သောအခါ MySQLI :: MySQLI :: $ error error :: $ အမှား အိမ်ခြံမြေများမှတစ်ဆင့်ထောက်ပံ့ပေးသည်။ ဤအိမ်ခြံမြေသည်ယခင်ဒေတာဘေ့စ်စစ်ဆင်ရေး၏အမှားအယွင်းများကိုပြန်လည်ရယူရန် (ဥပမာ, ရှာဖွေခြင်း, update, ထည့်သွင်းခြင်းစသည်) ။ MySQLI :: $ အမှားသည် အမှားအယွင်းရှိသည့်အမှားအယွင်းများကိုသာပြန်ပို့ပေးလိမ့်မည်ဟုမှတ်ချက်ချသင့်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"root"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"test_db"</span></span><span>);
</span><span><span class="hljs-comment">// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// တမင်အမှားလုပ်ပါ SQL မေးမြန်း</span></span><span>
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM non_existing_table"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>);
</span><span><span class="hljs-comment">// 检查မေးမြန်း是否执行成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-comment">// Get နှင့် output error message</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အမှားသတင်းစကား: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
အထက်ဖော်ပြပါကုဒ်များတွင်မတည်ရှိသည့်ဇယားတစ်ခုရှာဖွေခြင်းသည် ဒေါ်လာ MySQLI-> အမှားသည် MySQL error error_ex_existing_table 'TAVE_EDON_Existing_table' 'မတည်ရှိပါ "စသည့် MySQL error message ကိုအမှားပြန်ပို့သည်။
error_log () function သည် PHP မှအချက်အလက်များအားမှတ်တမ်းဖိုင်သို့အမှားအယွင်းများရေးရန်သို့မဟုတ်သတ်မှတ်ထားသောအမှားမှတ်တမ်း Handler သို့ပို့ရန်အလွန်အဆင်ပြေသောကိရိယာတစ်ခုဖြစ်သည်။ MySQLI :: $ အမှား နှင့် error_log () ကို ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် Database အမှားများကိုနောင်ပြ troubl နာဖြေရှင်းခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်မှတ်တမ်းဖိုင်သို့မှတ်တမ်းတင်နိုင်သည်။
error_log () function ကို၏အခြေခံအသုံးပြုမှုမှာ -
<span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$message</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$message_type</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$destination</span></span><span> = ?, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$extra_headers</span></span><span> = ?)
</span></span>
$ Message : မှတ်တမ်းတင်ခံရဖို့အမှားမက်ဆေ့ခ်ျကို။
$ Message_type : အမှားမှတ်တမ်းအမျိုးအစား။ 0 PHP သို့မှတ်တမ်းတင်ထားသောအမှားမှတ်တမ်းဖိုင်သည်အီးမေးလ်ပို့ခြင်းအားညွှန်ပြသည်။
$ destination : $ message_type သည် 1 သို့မဟုတ် 2 ဖြစ်ပါကလိပ်စာသို့မဟုတ် log file လမ်းကြောင်းကိုလက်ခံသည့်စာသို့သတ်မှတ်ပါ။
MySQLI :: Rail မှ $ error တစ်ခုသို့ $ error တစ်ခုအတွက်အမှားအချက်အလက်များကိုမည်သို့ရေးရမည်ကိုဖော်ပြသည့်ဥပမာတစ်ခုမှာဤတွင်ဖော်ပြထားသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"root"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"test_db"</span></span><span>);
</span><span><span class="hljs-comment">// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// တမင်အမှားလုပ်ပါ SQL မေးမြန်း</span></span><span>
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM non_existing_table"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>);
</span><span><span class="hljs-comment">// 如果မေးမြန်း失败,မှတ်တမ်းတင်ရန်အမှားများကိုမှတ်တမ်းတင်ပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-variable">$error_message</span></span><span> = </span><span><span class="hljs-string">"MySQL အမှား: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error . </span><span><span class="hljs-string">" | မေးမြန်း: "</span></span><span> . </span><span><span class="hljs-variable">$query</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-variable">$error_message</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/var/log/php_error.log"</span></span><span>);
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ဤကုဒ်တွင် SQL query error :: MySQLI ၏အမှားအယွင်း - အမှားအယွင်းများ :: $ အမှားသည် SQL query querted နှင့်အတူ /var/log/php_error.log ဖိုင်တွင်မှတ်တမ်းတင်ထားသည်။ error_log () ၏ပထမဆုံး parameter သည်အမှားအယွင်းတစ်ခုဖြစ်ပြီးဒုတိယ parameter သည် 3 ခုကို သတ်မှတ်ထားပြီးအမှားကိုသတ်မှတ်ထားသောမှတ်တမ်းဖိုင်သို့စာဖြင့်ရေးသားထားကြောင်းညွှန်ပြသည်။
PHP သည်အမှားအယွင်းများကိုမှတ်တမ်းဖိုင်သို့ရေးနိုင်ကြောင်းသေချာစေရန် log file သည်သင့်လျော်သောစာရေးခွင့်ခွင့်ပြုချက်ရှိရမည်။ Linux ကိုဥပမာတစ်ခုအနေဖြင့်ယူပြီး log file ၏ directory နှင့်ဖိုင်သည် PHP process သို့ကူးပြောင်းနိုင်ကြောင်းသေချာအောင်လုပ်ပါ။
<span><span>sudo </span><span><span class="hljs-built_in">chmod</span></span><span> 777 /var/log/php_error.log
</span></span>
တနည်းအားဖြင့်, သင်ကကမ္ဘာလုံးဆိုင်ရာအရေးအသားခွင့်ပြုချက်မထားလိုပါက PHP လုပ်ငန်းစဉ်များကိုဖိုင်ပိုင်သည့်အသုံးပြုသူနှင့်အသုံးပြုသူအုပ်စုကိုညှိခြင်းဖြင့်ခွင့်ပြုချက်များကိုရေးနိုင်သည်။
<span><span>sudo </span><span><span class="hljs-built_in">chown</span></span><span> www-data:www-data /var/log/php_error.log
</span></span>
ဖိုင်များကိုမှတ်တမ်းတင်ရန် logging လုပ်ခြင်းသည်အလွန်အသုံးဝင်သော်လည်းမှတ်တမ်းများကိုမှတ်တမ်းတင်ထားသည့်မှတ်တမ်းများကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်လိုပေမည်။ ဤတွင်အချို့သောအကောင်းမြင်အကြံပြုချက်များရှိသည် -
အမှားမှတ်တမ်းသို့ timestamps များကိုထည့်ခြင်းကအမှားတစ်ခုဖြစ်ပေါ်သည့်အခါခြေရာခံရန်ပိုမိုလွယ်ကူစေသည်။
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-variable">$error_message</span></span><span> = </span><span><span class="hljs-string">"["</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"] MySQL အမှား: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error . </span><span><span class="hljs-string">" | မေးမြန်း: "</span></span><span> . </span><span><span class="hljs-variable">$query</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-variable">$error_message</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/var/log/php_error.log"</span></span><span>);
}
</span></span>
သင်၏လျှောက်လွှာသည်သုံးစွဲသူပေါင်းစုံစနစ်တစ်ခုဖြစ်ပြီး 0 န်ဆောင်မှုခံယူသူ၏အိုင်ပီလိပ်စာကိုမှတ်တမ်းတင်ခြင်းနှင့်လက်ရှိသုံးစွဲသူ၏ ID သည်ပြ the နာကိုနေရာချရာတွင်အလွန်အထောက်အကူပြုလိမ့်မည်။
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-variable">$error_message</span></span><span> = </span><span><span class="hljs-string">"["</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"] IP: "</span></span><span> . </span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REMOTE_ADDR'</span></span><span>] . </span><span><span class="hljs-string">" အသုံးပြုသူID: "</span></span><span> . </span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'user_id'</span></span><span>] . </span><span><span class="hljs-string">" MySQL အမှား: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error . </span><span><span class="hljs-string">" | မေးမြန်း: "</span></span><span> . </span><span><span class="hljs-variable">$query</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-variable">$error_message</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/var/log/php_error.log"</span></span><span>);
}
</span></span>
သင်၏မှတ်တမ်းဖိုင်များသည်အလွန်ကြီးမားလာပါကအမှားအယွင်းများကိုသာသစ်ထုတ်လုပ်ခြင်းကိုသာပြင်ဆင်ခြင်းသို့မဟုတ် log files များကိုစီမံခန့်ခွဲရန် logrotate ကဲ့သို့သော log rotation tool ကိုသုံးပါ။
MySQLI :: $ အမှား နှင့် error_log ကို ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဖိုင်များကိုမှတ်တမ်းတင်ရန်ဒေတာဘေ့စ်အမှားများကိုထိရောက်စွာမှတ်တမ်းတင်နိုင်သည်။ ၎င်းသည်ဖွံ့ဖြိုးရေးလုပ်ငန်းစဉ်အတွင်းပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်သာမကထုတ်လုပ်မှုဆိုင်ရာအချက်အလက်များအမှားအယွင်းများကိုအချိန်မီရှာဖွေတွေ့ရှိရန်လည်းကူညီသည်။ ဆင်ခြင်တုံတရားများကို အသုံးပြု. timestamps များ, အသုံးပြုသူသတင်းအချက်အလက်နှင့် 0 န်ဆောင်မှုခံယူသူ IP ကို အသုံးပြု. မှတ်တမ်း၏ traceability နှင့်လက်တွေ့ကျမှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
လုံခြုံရေး 0 င်ခွင့်ကိုဖယ်ရှားပေးသည့်အခါအမှားအယွင်းများကိုဖြန့်ချိချိန်တွင်အမှားမှတ်တမ်းဖိုင်များ၏ခွင့်ပြုချက်ကိုသေချာစွာသတ်မှတ်ရန်သတိရပါ။
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli