",); $html = str_replace($search, $replace, $html); $dom = പുതിയ DOMDocument(); $dom->loadHTML($html);
മറ്റ് ഉപയോക്താക്കളിൽ നിന്ന് ഈ പ്രശ്നത്തെക്കുറിച്ച് ഞാൻ പലപ്പോഴും കേട്ടിട്ടുണ്ട്. ചിലത്, ഹോസ്റ്റർ കാരണം, ദൃശ്യമാകുന്ന പിശകുകൾ മറയ്ക്കേണ്ടതുണ്ട്, മറ്റുള്ളവർ, നേരെമറിച്ച്, അവരുടെ കോഡിൽ എന്താണ് സംഭവിക്കുന്നതെന്ന് മനസിലാക്കേണ്ടതുണ്ട്, കാരണം ഒരു പിശക് പോലും കാണിക്കുന്നില്ല. ഈ ലേഖനത്തിൽ പിശകുകൾ പ്രദർശിപ്പിക്കുന്നതിനും മറയ്ക്കുന്നതിനുമുള്ള എല്ലാ പ്രധാന വഴികളും കാണിക്കാൻ ഞാൻ ശ്രമിക്കും.
ഒരു PHP സ്ക്രിപ്റ്റിൽ
1)
പിഎച്ച്പിയിൽ പിശക് മാനേജ്മെൻ്റ് സിസ്റ്റത്തെ പിന്തുണയ്ക്കുന്ന ഒരു പ്രസ്താവന മാത്രമേയുള്ളൂ - ഇതാണ്
അടയാളം @. ഏത് പിശക് സന്ദേശവും അവഗണിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. അത് ഉൾക്കൊള്ളുന്ന ഒരു പദപ്രയോഗത്തിന് മുമ്പ് ഇത് സ്ഥാപിക്കണം.
ഉദാഹരണത്തിൽ ഒരു ബോധപൂർവമായ പിശക് ഉണ്ട്, പക്ഷേ അത് പ്രദർശിപ്പിക്കില്ല
$മൂല്യം = @$var[$key];
2)
നിങ്ങൾ പരിശോധിക്കുന്ന PHP സ്ക്രിപ്റ്റിന് മുമ്പായി നിങ്ങൾക്ക് ഒരു പിശക് ഡിസ്പ്ലേ പാരാമീറ്റർ ക്രമീകരണം ചേർക്കാനും കഴിയും ( ഡിസ്പ്ലേ_എററുകൾ). ഇതിന് മൂല്യം ഓൺ (ഷോ) അല്ലെങ്കിൽ ഓഫ് (മറയ്ക്കുക) എടുക്കാം.
Ini_set("display_errors","On");
error_reporting("E_ALL");
അതനുസരിച്ച്, പിശകുകൾക്കായി പരിശോധിച്ച കോഡിന് ശേഷം, പാരാമീറ്റർ തിരികെ സജ്ജമാക്കുക.
Ini_set("display_errors","Off");
ഉദാഹരണത്തിന്, നിങ്ങൾ സ്ക്രിപ്റ്റിൽ പിശകുകൾ കാണാൻ ആഗ്രഹിക്കുന്നു
Ini_set("display_errors", "On"); // പിശക് സന്ദേശങ്ങൾ കാണിക്കും
പിശക്_റിപ്പോർട്ടിംഗ് (E_ALL); // E_ALL - എല്ലാ പിശകുകളും പ്രദർശിപ്പിക്കുക
$മൂല്യം = $var[$key]; // പിശക് ഉദാഹരണം
ini_set("display_errors", "Off"); // ഇപ്പോൾ സന്ദേശങ്ങളൊന്നും ഉണ്ടാകില്ല
നിങ്ങൾക്ക് ഇത് മറ്റൊരു രീതിയിൽ സജ്ജീകരിക്കാം (മുകളിൽ ഓഫും താഴെയും) അതിനാൽ കോഡിൻ്റെ ഒരു പ്രത്യേക വിഭാഗത്തിൽ പിശകുകൾ ദൃശ്യമാകില്ല.
.htaccess ഫയലിൽ
മിക്കപ്പോഴും, ഫയലിലെ ക്രമീകരണങ്ങൾ വ്യക്തമാക്കുന്നതിലൂടെ പ്രശ്നം പരിഹരിക്കപ്പെടും
.htaccess, ഇത് സൈറ്റിൻ്റെ റൂട്ട് ഡയറക്ടറിയിൽ സ്ഥിതിചെയ്യുന്നു. php_flag display_errors എന്ന വരിയിൽ നിങ്ങൾ ഓൺ അല്ലെങ്കിൽ ഓഫ് എന്ന് സജ്ജീകരിക്കേണ്ടതുണ്ട്
Php_flag display_errors ഓൺ
# മുന്നറിയിപ്പുകൾ ഒഴികെയുള്ള എല്ലാ പിശകുകളും കാണിക്കുക (അറിയിപ്പ്)
php_value error_reporting "E_ALL & ~E_NOTICE"
php.ini ഫയലിൽ
നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, പരാമീറ്റർ പല സ്ഥലങ്ങളിലും വ്യക്തമാക്കാം. എന്നിരുന്നാലും, ഈ പാരാമീറ്ററിന് മുഴുവൻ സൈറ്റിലും ഒരു നിശ്ചിത മൂല്യം ഉണ്ടായിരിക്കണമെന്ന് നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അത് php.ini ഫയലിൽ സജ്ജീകരിക്കുന്നത് എളുപ്പമാണ് (ഇത് എല്ലായ്പ്പോഴും ഹോസ്റ്റിംഗിൽ ആക്സസ് ചെയ്യാൻ കഴിയില്ല), എന്നാൽ ഈ സാഹചര്യത്തിൽ നിങ്ങൾക്ക് ഇത് മറികടക്കാൻ കഴിയും. മുഴുവൻ ഹോസ്റ്റിംഗിൻ്റെയും ക്രമീകരണങ്ങൾ
IN php.ini:
Error_reporting = E_ALL
display_errors ഓൺ
മുകളിലെ വരിയിൽ ഞങ്ങൾ എല്ലാത്തരം പിശകുകളും തിരഞ്ഞെടുക്കുന്നു, താഴത്തെ വരിയിൽ അവയുടെ പ്രദർശനത്തിനായി ഞങ്ങൾ മുന്നോട്ട് പോകും.
എഡിറ്റുകൾക്ക് ശേഷം, ക്രമീകരണങ്ങൾ മാറ്റാനും പ്രാബല്യത്തിൽ വരാനും നിങ്ങൾ Apache പുനരാരംഭിക്കേണ്ടതുണ്ട് (മനോഹരമായതോ പുനരാരംഭിക്കുന്നതോ):
Sudo apachectl -k മനോഹരം
പിശക് പരാമീറ്റർ ഏത് ക്രമത്തിലാണ് പ്രോസസ്സ് ചെയ്യുന്നത്?
തുടക്കത്തിൽ തന്നെ, php.ini പാരാമീറ്റർ കണക്കിലെടുക്കുന്നു, തുടർന്ന് .htaccess, തുടർന്ന് PHP സ്ക്രിപ്റ്റിൽ നേരിട്ട് വ്യക്തമാക്കുന്നത്. അതിനാൽ എന്തെങ്കിലും പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, ചെയിൻ നോക്കുക, ഒരുപക്ഷേ അവിടെ മറ്റൊരു ക്രമീകരണം ഉണ്ടായിരിക്കാം.
എല്ലായ്പ്പോഴും എന്നപോലെ, നിങ്ങളുടെ ശ്രദ്ധയ്ക്കും ഭാഗ്യത്തിനും നന്ദി! ലേഖനം ഉപയോഗപ്രദമായിരുന്നുവെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു!
PHP ഒരു പിശക് നിയന്ത്രണ ഓപ്പറേറ്ററെ പിന്തുണയ്ക്കുന്നു: @ ചിഹ്നം.
PHP കോഡിലെ ഏതെങ്കിലും എക്സ്പ്രഷനു മുമ്പുള്ള സാഹചര്യത്തിൽ, ആ എക്സ്പ്രഷൻ സൃഷ്ടിക്കുന്ന ഏതെങ്കിലും പിശക് സന്ദേശങ്ങൾ അവഗണിക്കപ്പെടും. ഉപയോഗിച്ച് നിങ്ങളുടെ സ്വന്തം പിശക് കൈകാര്യം ചെയ്യൽ പ്രവർത്തനം ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെങ്കിൽ set_error_handler() , അപ്പോൾ അത് ഇപ്പോഴും വിളിക്കപ്പെടും, എന്നിരുന്നാലും, ഈ ഫംഗ്ഷനിൽ ഫംഗ്ഷൻ എന്ന് വിളിക്കപ്പെടുന്നു error_reporting()
, നൽകിയ പിശകിന് കാരണമായ ഫംഗ്ഷൻ @ ഉപയോഗിച്ച് അമർത്തിയാൽ അത് 0 തിരികെ നൽകും. ഓപ്ഷൻ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെങ്കിൽട്രാക്ക്_പിശകുകൾ
, സൃഷ്ടിച്ച എല്ലാ പിശക് സന്ദേശങ്ങളും $php_errormsg വേരിയബിളിൽ സംഭരിക്കും.
ഓരോ പുതിയ പിശകിലും ഈ വേരിയബിൾ തിരുത്തിയെഴുതപ്പെടും, അതിനാൽ ആവശ്യമെങ്കിൽ അത് ഉടനടി പരിശോധിക്കുക.
// ഫയലുകളിൽ പ്രവർത്തിക്കുമ്പോൾ ബോധപൂർവമായ പിശക് $my_file = @file("non_existent_file") അല്ലെങ്കിൽമരിക്കുക (
"ഫയൽ തുറക്കുന്നതിൽ പിശക്: പിശക് സന്ദേശം ഇതായിരുന്നു:"
$php_errromsg "" );
// ഫംഗ്ഷനുകൾ മാത്രമല്ല, ഏത് എക്സ്പ്രഷനുകൾക്കും പ്രവർത്തിക്കുന്നു
?>
$മൂല്യം = @ $കാഷെ [$കീ];:
// $കീ ഇല്ലെങ്കിൽ, പിശക് സന്ദേശം (അറിയിപ്പ്) പ്രദർശിപ്പിക്കില്ല അഭിപ്രായം@ ഓപ്പറേറ്റർ എക്സ്പ്രഷനുകളിൽ മാത്രമേ പ്രവർത്തിക്കൂ. ഒരു ലളിതമായ നിയമമുണ്ട്: എന്തെങ്കിലും ഒരു മൂല്യം നൽകുകയാണെങ്കിൽ, അതിന് മുമ്പിലുള്ള @ ഓപ്പറേറ്റർ നിങ്ങൾക്ക് ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഒരു വേരിയബിളിൻ്റെ പേരിന് മുമ്പ് @ എന്നത് ഉപയോഗിക്കാം, അനിയന്ത്രിതമായ ഫംഗ്ഷൻ അല്ലെങ്കിൽ കോള്ഉൾപ്പെടുന്നു
, സ്ഥിരം തുടങ്ങിയവ. അതേ സമയം, ഒരു ഫംഗ്ഷൻ അല്ലെങ്കിൽ ക്ലാസ് നിർവചനത്തിന് മുമ്പ് നിങ്ങൾക്ക് ഈ ഓപ്പറേറ്റർ ഉപയോഗിക്കാൻ കഴിയില്ല, പോലുള്ള സോപാധിക നിർമ്മാണങ്ങൾ , അപ്പോൾ അത് ഇപ്പോഴും വിളിക്കപ്പെടും, എന്നിരുന്നാലും, ഈ ഫംഗ്ഷനിൽ ഫംഗ്ഷൻ എന്ന് വിളിക്കപ്പെടുന്നുഎങ്കിൽ
, ഫോറെച്ച് മുതലായവ.
ഫീച്ചർ വിവരണവും പരിശോധിക്കുക
കൂടാതെ മാനുവൽ വിഭാഗം പിശക് കൈകാര്യം ചെയ്യലും ലോഗിംഗ് ഫംഗ്ഷനുകളും.
ശ്രദ്ധ
ഇന്ന്, സ്ക്രിപ്റ്റിനെ തടസ്സപ്പെടുത്തുന്ന ഗുരുതരമായ പിശകുകളെക്കുറിച്ചുള്ള സന്ദേശങ്ങളുടെ ഔട്ട്പുട്ട് "@" ഓപ്പറേറ്റർ അടിച്ചമർത്തുന്നു. മറ്റ് കാര്യങ്ങൾക്കൊപ്പം, ഒരു ഫംഗ്ഷൻ പ്രവർത്തിപ്പിക്കുമ്പോൾ സംഭവിക്കുന്ന പിശകുകൾ അടിച്ചമർത്താൻ നിങ്ങൾ "@" ഉപയോഗിക്കുകയാണെങ്കിൽ, അത് ലഭ്യമല്ലെങ്കിൽ അല്ലെങ്കിൽ തെറ്റായി എഴുതിയിട്ടുണ്ടെങ്കിൽ, ഒരു അറിയിപ്പും കൂടാതെ സ്ക്രിപ്റ്റിൻ്റെ തുടർന്നുള്ള എക്സിക്യൂഷൻ നിർത്തലാക്കും.
12 വർഷം മുമ്പ്
ഒരു പുതിയ ക്ലാസ്/ഒബ്ജക്റ്റിന് പിശകുകൾ അടിച്ചമർത്താൻ:
// പരീക്ഷിച്ചു: PHP 5.1.2 ~ 2006-10-13
// സാധാരണ ഉദാഹരണം
// പ്രവർത്തിക്കുന്നില്ല!
//$var = പുതിയ @some_class(); // വാക്യഘടന പിശക്
?>
a-യിലേക്ക് കണക്റ്റ് ചെയ്യുമ്പോൾ ഇത് ഏറ്റവും ഉപയോഗപ്രദമാണെന്ന് ഞാൻ കണ്ടെത്തി
ഡാറ്റാബേസ്, പിശകുകൾ നിയന്ത്രിക്കാൻ ഞാൻ ആഗ്രഹിച്ചു
നിശ്ചലമായിരിക്കുമ്പോൾ തന്നെ ക്ലയൻ്റിന് മുന്നറിയിപ്പുകളും പ്രദർശിപ്പിക്കും
ആക്സസിൻ്റെ ക്ലാസ് ശൈലി ഉപയോഗിക്കുന്നു.
14 വർഷം മുമ്പ്
trigger_error() () എന്ന ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നതാണ് നല്ലത്
നിങ്ങൾ സ്വയം പിശക് നില പരിശോധിക്കുന്നതിനേക്കാൾ നിർവ്വചിച്ച അറിയിപ്പുകളും മുന്നറിയിപ്പുകളും പിശകുകളും പ്രദർശിപ്പിക്കുന്നതിന്. php.ini, ഔട്ട്പുട്ടിൽ നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ ലോഗ്ഫൈലുകളിലേക്ക് സന്ദേശങ്ങൾ എഴുതാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു
പിശക്_റിപ്പോർട്ടിംഗ്() ലെവലിനെ ആശ്രയിക്കുന്ന സന്ദേശങ്ങൾ @-sign ഉപയോഗിച്ച് ഔട്ട്പുട്ട് അടിച്ചമർത്തുക.
8 വർഷം മുമ്പ്
ഒരു ഏകീകൃത പിശക് മാനേജുമെൻ്റിനായി നിങ്ങൾ ErrorException ഒഴിവാക്കൽ ഉപയോഗിക്കുകയാണെങ്കിൽ, പിശക് ഹാൻഡ്ലറിൽ പിശക്_റിപ്പോർട്ടിംഗിനെതിരെ പരീക്ഷിക്കാൻ ഞാൻ നിങ്ങളെ ഉപദേശിക്കുന്നു, ഒഴിവാക്കൽ ഹാൻഡ്ലറിലല്ല, പിശക്_റിപ്പോർട്ടിംഗ് എക്സെപ്ഷൻ ഹാൻഡ്ലറിലേക്ക് കൈമാറ്റം ചെയ്യപ്പെടാത്തതിനാൽ ശൂന്യമായ പേജുകൾ പോലുള്ള ചില തലവേദനകൾ നിങ്ങൾക്ക് നേരിടേണ്ടി വന്നേക്കാം. .
{
}
ഫംഗ്ഷൻ catchException ($e)
{
{
മടങ്ങുക;
}
// കുറച്ച് കാര്യങ്ങൾ ചെയ്യൂ
}
?>
ഇത് ചെയ്യുന്നതാണ് നല്ലത്:
ഫംഗ്ഷൻ എക്സപ്ഷൻ_എറർ_ഹാൻഡ്ലർ ($errno , $errstr , $errfile , $errline )
{
എങ്കിൽ (error_reporting() === 0 )
{
മടങ്ങുക;
}
പുതിയ ErrorException എറിയുക ($errstr, 0, $errno, $errfile, $errline);
}
Set_error_handler("exception_error_handler");
ഫംഗ്ഷൻ catchException ($e)
{
// കുറച്ച് കാര്യങ്ങൾ ചെയ്യൂ
}
Set_exception_handler("catchException");
?>
4 വർഷം മുമ്പ്
@ ഓപ്പറേറ്ററോട് നിങ്ങൾ തീർച്ചയായും വളരെ ഉദാരമനസ്കത പുലർത്താൻ പാടില്ലെങ്കിലും, ഇത് ആത്യന്തിക പാപമാണെന്ന് അവകാശപ്പെടുന്ന ആളുകളോടും ഞാൻ വിയോജിക്കുന്നു.
ഉദാഹരണത്തിന്, .ini ഫയൽ നഷ്ടമായേക്കാമെന്ന് നിങ്ങൾക്കറിയാമെങ്കിൽ, parse_ini_file() സൃഷ്ടിച്ച നോട്ടീസ്-ലെവൽ പിശക് അടിച്ചമർത്തുക എന്നതാണ് വളരെ ന്യായമായ ഉപയോഗം.
എൻ്റെ കാര്യത്തിൽ, ആ സാഹചര്യം കൈകാര്യം ചെയ്യാൻ FALSE റിട്ടേൺ മൂല്യം ലഭിച്ചാൽ മതിയായിരുന്നു, എന്നാൽ എൻ്റെ API വഴി പിശകുകൾ ഔട്ട്പുട്ട് ചെയ്യുന്നത് ഞാൻ ആഗ്രഹിക്കുന്നില്ല.
TL;DR: ഇത് ഉപയോഗിക്കുക, എന്നാൽ നിങ്ങൾ എന്താണ് അടിച്ചമർത്തുന്നതെന്നും എന്തിനാണെന്നും അറിയാമെങ്കിൽ മാത്രം.
2 വർഷം മുമ്പ്
എക്സ്പ്രഷൻ ഒരു പിശക് നേരിടുമ്പോൾ, എറർ കൺട്രോൾ ഓപ്പറേറ്റർ സംരക്ഷിച്ചിരിക്കുന്ന ഒരു എക്സ്പ്രെഷൻ്റെ റിട്ടേൺ മൂല്യം അസൈൻ ചെയ്തിരിക്കുന്ന ഒരു വേരിയബിളിനുള്ള PHP-യുടെ പെരുമാറ്റം എന്താണ്?
ഇനിപ്പറയുന്ന കോഡിൻ്റെ അടിസ്ഥാനത്തിൽ, ഫലം NULL ആണ് (എന്നാൽ എല്ലാ സാഹചര്യങ്ങളിലും ഇത് ശരിയാണെന്ന് സ്ഥിരീകരിച്ചാൽ നന്നായിരിക്കും).
$var = 3 ;
$arr = അറേ();
$var = @ $arr [ "x" ]; // ഈ അസൈൻമെൻ്റിന് ശേഷം $var-ൻ്റെ മൂല്യം എന്താണ്?
// അസൈൻമെൻ്റ് ഒരിക്കലും നടന്നിട്ടില്ലാത്തതുപോലെ അതിൻ്റെ മുൻ മൂല്യം (3) ആണോ?
// ഇത് തെറ്റാണോ അതോ ശൂന്യമാണോ?
// ഇത് ഏതെങ്കിലും തരത്തിലുള്ള അപവാദമോ പിശക് സന്ദേശമോ പിശക് നമ്പറോ ആണോ?
Var_dump($var); // "NULL" എന്ന് പ്രിൻ്റ് ചെയ്യുന്നു
?>
5 വർഷം മുമ്പ്
പിശക് ഓപ്പറേറ്റർ പ്രവർത്തനരഹിതമാക്കാനുള്ള/ പ്രവർത്തനക്ഷമമാക്കുന്നതിനുള്ള നിർദ്ദേശം ആരെങ്കിലും (മറ്റൊരാൾ) കണ്ടെത്തിയേക്കുമോ എന്ന് ഞാൻ ആശ്ചര്യപ്പെട്ടു. അതായത്, ഇതുപോലുള്ള ഒന്നിന് പകരം (ചില കോഡുകളിൽ ഞാൻ കുറച്ച് സ്ഥലങ്ങൾ കണ്ടത്):
എങ്കിൽ(നിർവചിച്ചിരിക്കുന്നത്(പ്രൊഡക്ഷൻ )) {
@ഫംഗ്ഷൻ();
}
വേറെ (
ഫംഗ്ഷൻ ();
}
?>
ഇതുപോലൊന്ന് ഉണ്ടായിരിക്കാം:
(നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ (ഉൽപാദനം)) (
ini_set ("error.silent" , TRUE );
}
വേറെ (
ini_set ("error.silent" , FALSE );
}
?>
കൂടാതെ മാനുവൽ വിഭാഗം പിശക് കൈകാര്യം ചെയ്യലും ലോഗിംഗ് ഫംഗ്ഷനുകളും.
ഒരു സെഷനിൽ നിന്ന് ഒരു php സ്ക്രിപ്റ്റിനായുള്ള എല്ലാ പിശക് സന്ദേശങ്ങളും നിങ്ങൾക്ക് ലോഗ് ചെയ്യണമെങ്കിൽ ഇതുപോലുള്ള ഒന്ന് ഉപയോഗിക്കാം:
സെഷൻ_ആരംഭം();
ഫംഗ്ഷൻ പിശക് ($പിശക്, $റിട്ടേൺ = തെറ്റ്) (
ആഗോള $php_errromsg ;
if(isset($_SESSION [ "php_errors" ])) (
$_SESSION [ "php_errors" ] = അറേ();
}
$_SESSION [ "php_errors" ] = $error ; // $php_errromsg ഉപയോഗിക്കാം
എങ്കിൽ ($മടങ്ങുക == ശരി ) (
$ സന്ദേശം = "" ;
foreach($_SESSION [ "php_errors" ] $php_error ആയി ) (
$സന്ദേശങ്ങൾ .= $php_error . "\n" ;
}
$സന്ദേശങ്ങൾ തിരികെ നൽകുക ; // അല്ലെങ്കിൽ നിങ്ങൾക്ക് $_SESSION["php_errors"] ഉപയോഗിക്കാം
}
}
?>
ഇത് ആരെയെങ്കിലും സഹായിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു...
സംഭവിക്കുന്ന പിശകുകൾ നിയന്ത്രിക്കുന്നതിനുള്ള മികച്ച മാർഗം PHP നൽകുന്നു. ഒരു പിശക് എങ്ങനെ കൈകാര്യം ചെയ്യാം എന്നതിനെക്കുറിച്ച് ഞങ്ങൾ ഇവിടെ സംസാരിക്കും - ഉപയോക്താവിന് സംഭവം റിപ്പോർട്ട് ചെയ്യുക (അല്ലെങ്കിൽ റിപ്പോർട്ട് ചെയ്യരുത്), ആവശ്യമെങ്കിൽ - അഡ്മിനിസ്ട്രേറ്ററെ ഇമെയിൽ വഴി അറിയിക്കുക, സംഭവത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ ഒരു ലോഗ് ഫയലിലേക്ക് എഴുതുക.
അതിനാൽ, ആദ്യം, PHP-യിലെ പിശകുകൾ എന്താണെന്ന് നമുക്ക് നിർവചിക്കാം.
PHP ഇനിപ്പറയുന്ന പിശക് നിലകളെ പിന്തുണയ്ക്കുന്നു:
E_ERROR
E_WARNING
E_PARSE
E_NOTICE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE
E_ALL
E_STRICT
വാസ്തവത്തിൽ, പിശക് കൈകാര്യം ചെയ്യുന്നതിൻ്റെ തോത് നിർണ്ണയിക്കാനും ഒരു ബിറ്റ് മാസ്ക് നിർമ്മിക്കാനും ഉപയോഗിക്കുന്ന സ്ഥിരാങ്കങ്ങൾ മാത്രമാണിത്. സ്ഥിരാങ്കങ്ങൾക്ക് അർത്ഥവത്തായ പേരുകളുണ്ട്. സ്ഥിരാങ്കം നോക്കുമ്പോൾ - ഒരു വാക്യഘടന പിശകിൻ്റെ കാര്യത്തിൽ E_PARSE ലെവൽ പിശക് സംഭവിക്കുമെന്ന് നമുക്ക് പറയാം, PHP പ്രോഗ്രാമിംഗിൻ്റെ "നല്ല ശൈലി" ലംഘിക്കുന്നതിനെക്കുറിച്ചുള്ള പ്രോഗ്രാമർക്കുള്ള ഓർമ്മപ്പെടുത്തലാണ് E_NOTICE.
ചില ഉദാഹരണങ്ങൾ:
ഒരു MySQL (അല്ലെങ്കിൽ മറ്റ്) ഡാറ്റാബേസിലേക്കുള്ള ഒരു കണക്ഷൻ പരാജയപ്പെടുമ്പോൾ, PHP വ്യാഖ്യാതാവ് ഒരു E_WARNING പിശക് റിപ്പോർട്ട് ചെയ്യുന്നു
മുന്നറിയിപ്പ്: mysql_connect(): ഉപയോക്താവിന് ആക്സസ് നിരസിച്ചു: "VVingless@localhost" (പാസ്വേഡ് ഉപയോഗിക്കുന്നു: അതെ) /home/mysite/index.php-ൽ (ലൈൻ 83)
ശ്രദ്ധിക്കുക: PHP വ്യാഖ്യാതാവിന് പിശകുകൾ റിപ്പോർട്ടുചെയ്യുന്നതിന്, അതിനനുസരിച്ച് PHP കോൺഫിഗർ ചെയ്യണം: display_errors ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം - 1, E_WARNING ലെവലിൻ്റെ പിശകുകൾ പ്രദർശിപ്പിക്കേണ്ടത് ആവശ്യമാണെന്ന് പിശക്_റിപ്പോർട്ടിംഗ് നിർദ്ദേശം സൂചിപ്പിക്കണം (വെയിലത്ത്, തീർച്ചയായും, മറ്റുള്ളവ ). ഈ നിർദ്ദേശങ്ങളുടെ മൂല്യങ്ങൾ നിങ്ങളുടെ ആവശ്യകതകൾ നിറവേറ്റുന്നില്ലെങ്കിൽ, ഏകദേശം ഇനിപ്പറയുന്ന ഉള്ളടക്കമുള്ള സ്ക്രിപ്റ്റ് (പേരിൻ്റെ തുടക്കത്തിലെ ഡോട്ട് ആവശ്യമാണ്) ഉള്ള ഫോൾഡറിൽ ഒരു .htaccess ഫയൽ സ്ഥാപിച്ച് നിങ്ങൾക്ക് അവ സ്വയം ഇൻസ്റ്റാൾ ചെയ്യാൻ ശ്രമിക്കാവുന്നതാണ്:
Php_flag display_errors ഓൺ
php_value error_reporting "E_ALL & ~E_NOTICE"
E_NOTICE ഒഴികെയുള്ള എല്ലാ തലങ്ങളിലും പിശക് സന്ദേശങ്ങൾ കാണിക്കും എന്നാണ് ഇതിനർത്ഥം
ഒരു പ്രോഗ്രാമർ ഒരു വാക്യഘടന പിശക് വരുത്തുമ്പോൾ, PHP വ്യാഖ്യാതാവ് E_PARSE ലെവൽ പിശക് റിപ്പോർട്ട് ചെയ്യുന്നു
പാഴ്സ് പിശക്: പാഴ്സ് പിശക്, അപ്രതീക്ഷിതമായ '(', ലൈൻ 150-ൽ /home/mysite/index.php-ൽ T_STRING പ്രതീക്ഷിക്കുന്നു
എന്നാൽ ഞങ്ങൾക്ക് ഏറ്റവും താൽപ്പര്യമുണർത്തുന്ന പിശക് ലെവലുകൾ E_USER_ERROR, E_USER_WARNING എന്നിവയാണ്. പേര് സൂചിപ്പിക്കുന്നത് പോലെ, ഇവ ഉപയോക്താവിന് സജ്ജമാക്കാൻ കഴിയുന്ന പിശക് ലെവലുകളാണ്. ഇതിനായി ഒരു trigger_error() ഫംഗ്ഷൻ ഉണ്ട് - അതിൻ്റെ സഹായത്തോടെ, PHP ചെയ്യുന്നതുപോലെ തന്നെ നിങ്ങൾക്ക് ഒരു സംഭവത്തെക്കുറിച്ച് ഉപയോക്താവിനെ അറിയിക്കാനാകും.
PHP മാനുവലിൽ നിന്ന് നിങ്ങൾക്കറിയാവുന്നതുപോലെ, trigger_error() ഫംഗ്ഷൻ രണ്ട് പാരാമീറ്ററുകൾ എടുക്കുന്നു.
void trigger_error (string error_msg [, int error_type])
ആദ്യത്തെ പാരാമീറ്റർ "ഫയൽ കണ്ടെത്തിയില്ല" പോലുള്ള ഒരു ടെക്സ്റ്റ് പിശക് സന്ദേശമാണ്. രണ്ടാമത്തെ പാരാമീറ്റർ പിശക് നില നിർണ്ണയിക്കുന്നു. trigger_error() ഫംഗ്ഷൻ E_USER പിശക് ഫാമിലിയിൽ മാത്രമേ പ്രവർത്തിക്കൂ - ഇതിനർത്ഥം നിങ്ങൾക്ക് E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE പിശക് ലെവലുകൾ സജ്ജീകരിക്കാമെന്നും E_WARNING പിശക് ലെവൽ സജ്ജീകരിക്കാൻ കഴിയില്ലെന്നും അർത്ഥമാക്കുന്നു. രണ്ടാമത്തെ പാരാമീറ്റർ ഓപ്ഷണൽ ആണ് കൂടാതെ E_USER_NOTICE ലേക്ക് ഡിഫോൾട്ടാണ്.
നമുക്ക് ശ്രമിക്കാം:
വാർത്താ ഫീഡിനായുള്ള ഞങ്ങളുടെ ഡാറ്റ news.txt എന്ന ഫയലിൽ സംഭരിച്ചിട്ടുണ്ടെന്ന് പറയാം, ഫയൽ കണ്ടെത്തിയില്ലെങ്കിൽ, ഒരു പിശക് റിപ്പോർട്ട് ചെയ്യേണ്ടതുണ്ട്. പ്രോഗ്രാം ടെക്സ്റ്റ് ഇതുപോലെ കാണപ്പെടും:
എങ്കിൽ (!file_exist('/home/mysite/news.txt')) (
trigger_error ('വാർത്ത ഫയൽ കണ്ടെത്തിയില്ല');
}
തൽഫലമായി, PHP വ്യാഖ്യാതാവ് E_USER_NOTICE ലെവലിൽ ഒരു പിശക് റിപ്പോർട്ട് ചെയ്യും
അറിയിപ്പ്: ലൈൻ 47-ൽ /home/mysite/index.php-ൽ വാർത്താ ഫയൽ കാണുന്നില്ല
എന്നാൽ ഇത് നമുക്ക് എന്താണ് നൽകുന്നത്? ആരംഭിക്കുന്നതിന്, php.ini അല്ലെങ്കിൽ .htaccess ഫയലിൽ നിർദ്ദേശങ്ങൾ സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ
php_value log_errors "1"
php_value log_errors_max_len "1024"
php_value error_log "/home/mysite/my.log"
തുടർന്ന് സംഭവത്തിൻ്റെ ഒരു റെക്കോർഡ് സ്വയമേവ /home/mysite/my.log ഫയലിലേക്ക് ചേർക്കപ്പെടും.
PHP അറിയിപ്പ്: ലൈൻ 47-ൽ /home/mysite/index.php-ൽ വാർത്താ ഫയൽ കണ്ടെത്തിയില്ല
അടുത്തതായി, set_error_handler() ഫംഗ്ഷൻ ഉപയോഗിച്ച്, ഒരു PHP സ്ക്രിപ്റ്റ് എക്സിക്യൂഷൻ സമയത്ത് സംഭവിക്കുന്ന ഞങ്ങളുടെ സ്വന്തം പിശക് ഹാൻഡ്ലർ സജ്ജമാക്കാൻ കഴിയും.
മാനുവലിൽ നിന്ന് നിങ്ങൾക്കറിയാവുന്നതുപോലെ, PHP 4-ൽ ഫംഗ്ഷൻ ഒരൊറ്റ സ്ട്രിംഗ് പാരാമീറ്റർ എടുക്കുന്നു - ഒരു പിശക് സംഭവിക്കുമ്പോഴെല്ലാം എക്സിക്യൂട്ട് ചെയ്യുന്ന ഫംഗ്ഷൻ്റെ പേര്. PHP 5 ഒരു പാരാമീറ്റർ കൂടി സജ്ജമാക്കുന്നത് സാധ്യമാക്കുന്നു - ഞങ്ങളുടെ ഹാൻഡ്ലർ ഉപയോഗിച്ച് പ്രോസസ്സ് ചെയ്യുന്ന പിശകുകളുടെ തരം. ഫംഗ്ഷൻ ഒരു സ്ട്രിംഗ് നൽകുന്നു - ഇത് വരെ ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്ന ഹാൻഡ്ലർ ഫംഗ്ഷൻ്റെ പേര്.
സ്ട്രിംഗ് set_error_handler (കോൾബാക്ക് error_handler [, int error_types])
ഇതുപോലെ സജ്ജമാക്കുക
set_error_handler("my_error_handler");
പിശകുകൾ കൈകാര്യം ചെയ്യുന്ന ഒരു ഇഷ്ടാനുസൃത ഫംഗ്ഷന് ഇനിപ്പറയുന്ന ഇൻപുട്ട് പാരാമീറ്ററുകൾ സ്വീകരിക്കാൻ കഴിയും:
- പിശക് ലെവൽ കോഡ്
- പിശകിൻ്റെ സ്ട്രിംഗ് വ്യാഖ്യാനം
- പിശക് സംഭവിച്ച ഫയലിൻ്റെ പേര്
- പിശക് സംഭവിച്ച ലൈൻ
E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING ലെവലുകളിലെ പിശകുകൾ കൈകാര്യം ചെയ്യാൻ ഈ ഫംഗ്ഷന് കഴിയില്ല എന്നതും ശ്രദ്ധിക്കേണ്ടതാണ്.
ഇഷ്ടാനുസൃത പിശക് കൈകാര്യം ചെയ്യുന്നയാളെക്കുറിച്ചുള്ള വിവരങ്ങൾ വ്യാഖ്യാതാവിന് ലഭിക്കുന്നതിന് മുമ്പ് ലിസ്റ്റ് ചെയ്ത തലങ്ങളിൽ പിശകുകൾ സംഭവിക്കുന്നതാണ് ഇതിന് കാരണം.
അതിനാൽ, നമുക്ക് നമ്മുടെ പ്രവർത്തനം പ്രഖ്യാപിക്കാം
ഫംഗ്ഷൻ my_error_handler($code, $msg, $file, $line) (
}
ശ്രദ്ധിക്കുക: കൂടുതലോ കുറവോ വലിപ്പമുള്ള ഓരോ സ്ക്രിപ്റ്റും അതിൻ്റെ പ്രവർത്തനത്തിൻ്റെ എളുപ്പത്തിനായി സാധാരണയായി നിരവധി ഫയലുകളായി തിരിച്ചിരിക്കുന്നു. ഒരു പ്രോഗ്രാമിൻ്റെ മോഡുലാരിറ്റി എങ്ങനെ സംഘടിപ്പിക്കാം എന്നത് ഒരു പ്രത്യേക സംഭാഷണത്തിനുള്ള വിഷയമാണ്. ഇപ്പോൾ, പൊതുവായ ക്രമീകരണങ്ങൾ ഒരു പ്രത്യേക ഫയലായി വേർതിരിക്കാൻ ഞാൻ ഉപദേശിക്കാൻ ആഗ്രഹിക്കുന്നു, അത് പ്രോഗ്രാമിൻ്റെ തുടക്കത്തിൽ ഉൾപ്പെടുത്തിയ പ്രസ്താവന ഉപയോഗിച്ചോ അല്ലെങ്കിൽ auto_prepend_file നിർദ്ദേശം ഉപയോഗിച്ചോ ഉൾപ്പെടുത്തും. ഈ ഫയലിൽ ഞങ്ങളുടെ ഹാൻഡ്ലറും സ്ഥാപിക്കാവുന്നതാണ്. പിശക് ഹാൻഡ്ലർ പ്രോഗ്രാമിൻ്റെ തുടക്കത്തോട് കഴിയുന്നത്ര അടുത്ത് ഇൻസ്റ്റാൾ ചെയ്യണം, വെയിലത്ത് തുടക്കത്തിൽ തന്നെ.
ഇത് ശരിക്കും പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ, നമുക്ക് ഒരു പുതിയ PHP ഫയൽ സൃഷ്ടിച്ച് അത് പ്രവർത്തിപ്പിക്കാൻ ശ്രമിക്കാം
myerrortest.php ഫയലിൻ്റെ ഉള്ളടക്കം
n"; echo "$file ($line)"; ) set_error_handler("my_error_handler"); എങ്കിൽ (!file_exists("/home/mysite/news.txt")) ( trigger_error("വാർത്ത ഫയൽ കണ്ടെത്തിയില്ല"); ) ?>
ഈ ഫയൽ പ്രോസസ്സ് ചെയ്യുന്നതിൻ്റെ ഫലം ഇതുപോലെയായിരിക്കും:
ഒരു പിശക് സംഭവിച്ചു: വാർത്താ ഫയൽ കണ്ടെത്തിയില്ല (1024)
/home/mysite/myerrortest.php (12)
സംഭവിക്കുന്ന എല്ലാ പിശകുകളെക്കുറിച്ചും ഡാറ്റ സ്വീകരിക്കുന്ന ഒരു ഫംഗ്ഷൻ ഇപ്പോൾ നമുക്കുണ്ട്. ഇത് എങ്ങനെ ഉപയോഗിക്കാം എന്ന് നമുക്ക് ചിന്തിക്കാം.
ലെവൽ പിശകുകൾ ഞങ്ങൾ കൈകാര്യം ചെയ്യും
E_ERROR
E_WARNING
E_NOTICE
E_USER_ERROR
E_USER_NOTICE
ഒരു നല്ല സമ്പൂർണ്ണ പ്രോഗ്രാമിലെ ആദ്യത്തെ മൂന്ന് പിശകുകൾ സംഭവിക്കാൻ പാടില്ല, അതിനാൽ സ്ക്രീനിൽ പിശക് വാചകം പ്രദർശിപ്പിക്കുന്നതിലൂടെ മാത്രമേ ഞങ്ങൾ അവയെക്കുറിച്ച് ഉപയോക്താവിനെ അറിയിക്കുകയുള്ളൂ. സ്ക്രിപ്റ്റ് വികസിപ്പിച്ചുകൊണ്ടിരിക്കുമ്പോൾ ഈ രീതിയിൽ നിങ്ങൾക്ക് പ്രവർത്തിക്കാൻ കഴിയും, തുടർന്ന് അവയെക്കുറിച്ചുള്ള സന്ദേശങ്ങൾ പ്രവർത്തനരഹിതമാക്കുകയോ ഒരു ലോഗ് ഫയലിൽ രേഖപ്പെടുത്തുകയോ ചെയ്യാം.
മറ്റ് രണ്ടെണ്ണത്തെ സംബന്ധിച്ചിടത്തോളം - നിങ്ങൾ ഇതിനകം ഊഹിച്ചതുപോലെ - അവ അവിടെ ഉപയോഗപ്രദമാകും. ആവശ്യമെങ്കിൽ ഈ തലങ്ങളിൽ നമ്മൾ തന്നെ തെറ്റുകൾ വരുത്തും. ഒരു പിശക് സന്ദേശം ലോഗ് ഫയലിലേക്ക് പോയി അഡ്മിനിസ്ട്രേറ്റർക്ക് ഒരു ഇ-മെയിലിലേക്ക് അയയ്ക്കുമ്പോൾ E_USER_ERROR ലെവലിൻ്റെ പിശകുകൾ വിളിക്കപ്പെടുമെന്ന് നമുക്ക് പറയാം (ഉദാഹരണത്തിന്, ഒരു SQL അന്വേഷണം നടപ്പിലാക്കുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു, അല്ലെങ്കിൽ ഉണ്ടായിരുന്നു ആവശ്യമുള്ള ഫയലിലേക്ക് പ്രവേശന പാസ്വേഡ് ഇല്ല). "ലൈറ്റ്" പിശകുകൾ സംഭവിക്കുമ്പോൾ E_USER_NOTICE ലെവലിൽ പിശകുകൾ സംഭവിക്കും (ഉദാഹരണത്തിന്, ഉപയോക്താവ് ഫോം തെറ്റായി പൂരിപ്പിച്ചു, അല്ലെങ്കിൽ ഡാറ്റാബേസിൽ നിന്ന് നിലവിലില്ലാത്ത റെക്കോർഡ് അഭ്യർത്ഥിച്ചു).
ഇപ്പോൾ ഞങ്ങളുടെ പിശക് കൈകാര്യം ചെയ്യൽ പ്രവർത്തനം ഇതുപോലെ കാണപ്പെടും:
// ചില പ്രാഥമിക ക്രമീകരണങ്ങൾ // പിശക് ഡിസ്പ്ലേ മോഡ് സജ്ജമാക്കുക // E_NOTICE error_reporting ഒഴികെയുള്ള എല്ലാ പിശകുകളും പ്രദർശിപ്പിക്കുക (E_ALL & ~E_NOTICE); // ഡീബഗ്ഗിംഗ് സമയത്ത് // ഡീബഗ്ഗിംഗ് മോഡ് ഓണാക്കുന്നതിനും ഓഫാക്കുന്നതിനും ഈ സ്ഥിരാങ്കം ഉത്തരവാദിയാണ് - സന്ദേശങ്ങൾ // മെയിൽ വഴി അയയ്ക്കില്ല, പക്ഷേ സ്ക്രീനിൽ പ്രിൻ്റ് ചെയ്തത് നിർവ്വചിക്കുക ("ഡീബഗ്", 0); // ഇത് ഒരു ആഗോള വേരിയബിളാണ്, // എന്ന സന്ദേശം സംഭരിക്കും // ഉപയോക്താവിന് $MSG = ""; // ഡെവലപ്പറുടെ ഇ-മെയിൽ എവിടെയാണ് പിശകുകൾ അയയ്ക്കേണ്ടതെന്ന് നിർവ്വചിക്കുന്നു("ADM_EMAIL"," [ഇമെയിൽ പരിരക്ഷിതം]"); // ലോഗ് ഫയൽ നിർവ്വചിക്കുക("LOGFILE","/home/mysite/mylog.log"); // സെർവറുമായുള്ള സമയ വ്യത്യാസം (സെക്കൻഡിൽ) നിർവ്വചിക്കുക ("TIMEOFFSET", 0); // ഫംഗ്ഷൻ തന്നെ ഫംഗ്ഷൻ my_error_handler($code, $msg, $file, $line) ( // ഗ്ലോബൽ വേരിയബിൾ അതിൽ പിശക് സന്ദേശം // എഴുതപ്പെടും. ആഗോള $MSG; // E_NOTICE ലെവലിൽ പിശകുകൾ ഒഴിവാക്കുക // എങ്കിൽ പിശകുകൾ അവഗണിക്കുക (($code == E_NOTICE) അല്ലെങ്കിൽ (error_reporting() == 0)) (മടങ്ങുക; ) // ഞങ്ങൾ ഒരു E_USER_NOTICE ലെവൽ പിശക് ഉയർത്തിയാൽ - // പിശക് വാചകം ആഗോള വേരിയബിളിലേക്ക് എഴുതുകയാണെങ്കിൽ സന്ദേശ മോഡ് പിശക് റിപ്പോർട്ടിംഗ് പ്രവർത്തനരഹിതമാക്കും. $MSG // കൂടാതെ ($code == E_USER_NOTICE) ($MSG = $msg; റിട്ടേൺ; ) // പിശക് നില E_ERROR ആണെങ്കിൽ - പിശക് വാചകം പ്രിൻ്റ് ചെയ്യുക // കൂടാതെ സ്ക്രിപ്റ്റിൻ്റെ നിർവ്വഹണം പൂർത്തിയാക്കുക എങ്കിൽ ($code == E_ERROR) ( മരിക്കുക ("
പിശക്:".$msg."
".$file." (ലൈൻ ".$ലൈൻ.")
"); ) // പിശക് E_WARNING ലെവലിലാണെങ്കിൽ, പിശക് വാചകം പ്രിൻ്റ് ചെയ്യുക // ($code == E_WARNING) (എക്കോ" ആണെങ്കിൽ ഫംഗ്ഷൻ എക്സിക്യൂട്ട് ചെയ്യുന്നത് നിർത്തുക
മുന്നറിയിപ്പ്:".$msg."
".$file." (ലൈൻ ".$ലൈൻ.")
"; തിരികെ; $MSG = "നിർണ്ണായകമായ പിശക്: നടപടി പൂർത്തിയായിട്ടില്ല.
ഡെവലപ്പർക്ക് ഒരു പിശക് സന്ദേശം അയച്ചു."; // $ടെക്സ്റ്റ് വേരിയബിളിലേക്ക് വിശദാംശങ്ങൾ എഴുതുക $text = $msg."
""ഫയൽ: ".$file." ". ലോഗിൽ എഴുതുക - ഫംഗ്ഷൻ error_writelog() എങ്കിൽ (DEBUG == 1) ( error_print($text); ) else ( error_mail($text); error_writelog($text); ) റിട്ടേൺ ചെയ്യുക ) // ഹാൻഡ്ലർ സെറ്റ്_എറർ_ഹാൻഡ്ലർ ( "my_error_handler"); ഇപ്പോൾ ഞങ്ങൾ സേവന പ്രവർത്തനങ്ങൾ വിവരിക്കുന്നു // ഫംഗ്ഷൻ സ്ക്രീൻ ഫംഗ്ഷനിലേക്ക് ഒരു പിശക് പ്രിൻ്റ് ചെയ്യുന്നു error_print($text) (echo $text).
"; ) // ഫംഗ്ഷൻ മെയിൽ ഫംഗ്ഷൻ വഴി ഒരു പിശക് അയയ്ക്കുന്നു error_mail($text) ($text = str_replace("
", "n", $text); $info = "സമയം: ".get_datetime()."nRemote IP:".get_ip()."n"; mail(ADM_EMAIL, "Error reporting", $info.$text ) // f ലോഗ് ഫംഗ്ഷനിലേക്ക് ഒരു പിശക് എഴുതുന്നു error_writelog($text) ($text = str_replace("
", "t", $text); എങ്കിൽ (@$fh = fopen(LOGFILE, "a+")) ( fputs($fh, get_datetime()."t".get_ip()."t".$text. "n"); സമയ വ്യത്യാസം കണക്കിലെടുത്ത് സമയം നേടുക ("H:i") / തീയതി നേടുക, സമയ വ്യത്യാസ ഫംഗ്ഷൻ get_date() ( return(date("Y-m-d", time () + TIMEOFFSET)); ) // സമയ വ്യത്യാസ ഫംഗ്ഷൻ get_datetime() കണക്കിലെടുത്ത് തീയതിയും സമയവും നേടുക (തിരിച്ചെടുക്കുക get_date() ." ".get_time(); ) // IP ഫംഗ്ഷൻ നേടുക get_ip() (($_SERVER["REMOTE_ADDR"]); ) അവസാനമായി, ഉപയോഗത്തിൻ്റെ ഒരു ഉദാഹരണം // ഫംഗ്ഷൻ വാർത്തകൾ എഴുതുന്നു ഒരു ഫയൽ ഫംഗ്ഷൻ write_news($title, $ text) ( $news_file = "/home/mysite/news.txt"; // ഒരു ശീർഷകത്തിൻ്റെ സാന്നിധ്യം പരിശോധിക്കുക - (!ട്രിം($ശീർഷകം)) എങ്കിൽ പിശക് നിർണായകമല്ല ( // ഫംഗ്ഷൻ // പരാജയത്തിൽ അവസാനിച്ചു എന്ന് നിർണ്ണയിക്കാൻ - അത് തെറ്റായി നൽകണം "); ) // വാർത്താ വാചകത്തിൻ്റെ സാന്നിധ്യം പരിശോധിക്കുക - (! ട്രിം($ ടെക്സ്റ്റ്)) എങ്കിൽ പിശക് നിർണായകമല്ല (!trigger_error("നിങ്ങൾ വാർത്താ വാചകം വ്യക്തമാക്കണം"); ) // ഇതിൻ്റെ സാന്നിധ്യം പരിശോധിക്കുക ഫയൽ കണ്ടെത്തിയില്ലെങ്കിൽ // ഞങ്ങൾ എഴുതുന്ന ഫയൽ - (!file_exist($news_file)) (!trigger_error("വാർത്ത ഡാറ്റാബേസ് ഫയൽ കണ്ടെത്തിയില്ല!", E_USER_ERROR); ) // .. .പ്രാഥമിക ഡാറ്റ പ്രോസസ്സിംഗ് ഇവിടെ... // വാർത്ത എഴുതുക $fh = fopen ($news_file, "a+"); fputs($fh, $title."t".$text."n"); fclose ($fh); // എല്ലാം ശരിയാണെങ്കിൽ, ഫംഗ്ഷൻ true return true നൽകുന്നു; ) // വാർത്തകൾ എഴുതാൻ ശ്രമിക്കുന്നു // $res = write_news("എൻ്റെ വാർത്ത", "എൻ്റെ വാർത്തയുടെ വാചകം") എന്ന വെബ് ഫോമിൽ നിന്ന് ഈ ഡാറ്റ വരാം; എങ്കിൽ ($res === തെറ്റ്) ( // തെറ്റ് നൽകിയാൽ, പിശക് എക്കോ $MSG പ്രിൻ്റ് ചെയ്യുക; ) അല്ലെങ്കിൽ ( // എല്ലാം ക്രമത്തിലാണെങ്കിൽ, നിങ്ങൾക്ക് അത് റിപ്പോർട്ടുചെയ്യാം // അല്ലെങ്കിൽ ഇതിലും മികച്ചത്, ഉപയോക്താവിനെ എവിടെയെങ്കിലും കൈമാറുക. പ്രതിധ്വനി "വാർത്ത ചേർത്തു";
ഉദാഹരണം പ്രവർത്തിക്കുന്നതിന്, കോഡിൻ്റെ മൂന്ന് മുൻ ബ്ലോക്കുകൾ ഒരു PHP ഫയലിലേക്ക് പകർത്തുക. ലോഗ് ഫയലിലേക്കുള്ള ആക്സസ് അവകാശങ്ങൾ 777 ആയി സജ്ജീകരിക്കാൻ മറക്കരുത്, അതിലൂടെ സ്ക്രിപ്റ്റിന് പ്രവർത്തിക്കാനും ശരിയായ പാതകൾ നൽകാനും നിങ്ങളുടെ ഇ-മെയിൽ സൂചിപ്പിക്കാനും കഴിയും. ഡീബഗ് വേരിയബിൾ 1 ആയി സജ്ജീകരിച്ച് നിങ്ങൾക്ക് ഡീബഗ് മോഡ് പ്രവർത്തനക്ഷമമാക്കാം.