PHP ত্রুটি প্রক্রিয়া
- Previous Page PHP Secure E-mail
- Next Page PHP Exception
ফিলিপ হেইপিইএমএফ একটি সহজ ট্রায়ার হ্যান্ডলিং প্রদান করে। একটি সংবাদ ব্রাউজারে পাঠানো হয়, যা ফাইল নাম, লাইন নম্বর এবং একটি ত্রুটির বর্ণনা ধারণ করে।
PHP ত্রুটি প্রক্রিয়া
在创建脚本和 web 应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。
এই ট্যুটোরিয়ালটি PHP-এর অন্যতম গুরুত্বপূর্ণ ত্রুটি সনাক্তকরণ পদ্ধতি পরিচয় করায়
আমরা বিভিন্ন ত্রুটি প্রসেসিং পদ্ধতি ব্যাখ্যা করবো:
- সহজ "die()" বিবৃতি
- পারস্পরিক ত্রুটি ও ত্রুটির স্প্রিংবক
- ত্রুটির প্রতিবেদন
মৌলিক ত্রুটি প্রসেসিং: die() ফাংশন ব্যবহার করা
প্রথম উদাহরণ একটি টেক্সট ফাইল খুলার জন্য একটি সাধারণ স্ক্রিপ্ট
<?php $file=fopen("welcome.txt","r"); ?>
যদি ফাইল না থাকে, তবে আপনি এমনই একটি ত্রুটি পাবেন:
সতর্কতা: fopen(welcome.txt) [function.fopen]: স্ট্রিম খুলতে ব্যর্থ কোনও ফাইল বা ডিরেক্টরি নেই C:\webfolder\test.php নম্বরে 2
উপরের মতো ত্রুটির বার্তা পাওয়া যায়নি করতে, আমরা ফাইলটি পরিদর্শন করা আগে তা কি থাকে না তা পরীক্ষা করি:
<?php if(!file_exists("welcome.txt")) { die("File not found"); } else { $file=fopen("welcome.txt","r"); } ?>
এখন, যদি ফাইল না থাকে, তবে আপনি এমনই একটি ত্রুটির বার্তা পাবেন:
ফাইল পাওয়া যায়নি
উপরের কোডটি আগের কোডটির তুলনায় বেশি কার্যকর, কারণ এটি ত্রুটির পরে স্ক্রিপ্টকে সমাপ্ত করার জন্য একটি সহজ ত্রুটি প্রসেসিং মেকানিজম ব্যবহার করে。
কিন্তু, সহজভাবে স্ক্রিপ্টটি সমাপ্ত করা সবসময়ই যথাযোগ্য নয়।আমরা ত্রুটি প্রসেসিং করার জন্য অপর একটি PHP ফাংশন অধ্যয়ন করি।
পারস্পরিক ত্রুটি প্রসেসার তৈরি করা
একটি পারস্পরিক ত্রুটি প্রসেসার তৈরি করা খুব সহজ।আমরা একটি স্বনির্দিষ্ট ফাংশন তৈরি করি, যা PHP-এ ত্রুটির সময় আমাদের ফাংশনটি কল করতে পারে。
এই ফাংশনটি কমপক্ষে দুইটি পারামিটার (error level এবং error message) সামলাতে পারবে, কিন্তু সর্বোচ্চ পাঁচটি পারামিটার (অপশনাল: file, line-number এবং error context) স্বীকার করতে পারে:
গঠনশৈলী
error_function(error_level, error_message, error_file, error_line, error_context)
পারামিটার | বর্ণনা |
---|---|
error_level | জরুরি।ব্যবহারকারীর দ্বারা নির্দিষ্ট ত্রুটির প্রতিবেদন স্তর।এটি একটি মান হতে হবে。 নিচের টেবিল দেখুন: ত্রুটির প্রতিবেদন স্তর |
error_message | জরুরি।ব্যবহারকারীর দ্বারা নির্দিষ্ট ত্রুটির বার্তা। |
error_file | বাধ্যতামূলক। ত্রুটির ঘটনাকালীন ফাইলের নাম নির্ধারণ করুন |
error_line | বাধ্যতামূলক। ত্রুটির ঘটনাকালীন লাইন নম্বর নির্ধারণ করুন |
error_context | বাধ্যতামূলক। একটি আর্রেই নির্ধারণ করুন, যাতে ত্রুটির সময় প্রত্যেকটি ভিন্ন ভিন্ন ভাবানুসারে বদলে এবং তাদের মান |
ত্রুটি রিপোর্ট স্তর
এই ত্রুটি রিপোর্ট স্তরগুলি হ্যান্ডলারটি হ্যান্ডল করতে চায় ত্রুটির বিভিন্ন ধরন
মান | কনস্ট্যান্ট | বর্ণনা |
---|---|---|
2 | E_WARNING | নোটিসযোগ্য রান-টাইম এরর। স্ক্রিপ্ট চলাকালীন স্ক্রিপ্টটি পরিত্যাগ করে না |
8 | E_NOTICE | রান-টাইম নোটিস স্ক্রিপ্ট ত্রুটির সম্ভাবনা রাখে, কিন্তু স্ক্রিপ্ট সাধারণত সঠিকভাবে চলেছে |
256 | E_USER_ERROR | ব্যবহারকারীর ঘাটতি এরর। PHP-র trigger_error() ফাংশন ব্যবহার করে প্রয়োগ করা E_ERROR-র মতো |
512 | E_USER_WARNING | ব্যবহারকারীর নোটিসযোগ্য নোটিস। PHP-র trigger_error() ফাংশন ব্যবহার করে প্রয়োগ করা E_WARNING-র মতো |
1024 | E_USER_NOTICE | ব্যবহারকারীর নোটিস। এটি PHP-র trigger_error() ফাংশন ব্যবহার করে প্রয়োগ করা E_NOTICE-র মতো |
4096 | E_RECOVERABLE_ERROR | প্রাপ্তিমূলক ঘাটতি এরর। E_ERROR-র মতো, কিন্তু ব্যবহারকারী দ্বারা নির্ধারিত হ্যান্ডলারকে পরিচ্ছন্ন করা যেতে পারে (দেখুন set_error_handler()) |
8191 | E_ALL | সমস্ত এরর এবং নোটিস, E_STRICT স্তর ছাড়া পিএইচপি 6.0-তে, E_STRICT E_ALL-র একটি অংশ |
এখন, আমরা একটি ত্রুটি হ্যান্ডলার তৈরি করতে চাই:
function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br />"; echo "স্ক্রিপ্ট শেষ"; die(); }
উপরের কোডটি একটি সহজ এরর হ্যান্ডলার। যখন এটি ট্রিগার করা হয়, তখন এটি এরর স্তর এবং এরর বার্তা নিয়ে আসে। তারপর এটি এরর স্তর এবং বার্তা প্রদর্শন করে এবং স্ক্রিপ্টটিকে সমাপ্ত করে。
এখন, আমরা একটি এরর হ্যান্ডলার তৈরি করেছি, এখন আমরা যেখানে এই ফাংশনটিকে ট্রিগার করবো তার নিশ্চয়ন করতে হবে。
সেট এরর হ্যান্ডলার
PHP-র ডিফল্ট এরর হ্যান্ডলার হল ইনবুট এরর হ্যান্ডলার। আমরা উপরের ফাংশনটিকে স্ক্রিপ্ট চলাকালীন ডিফল্ট এরর হ্যান্ডলার হিসাবে রূপান্তরিত করতে চাই。
যার মাধ্যমে ত্রুটি হ্যান্ডলারকে সমস্ত ত্রুটিতে আপনার পছন্দ করে প্রয়োগ করা যেতে পারে, তারপর স্ক্রিপ্ট বিভিন্নভাবে বিভিন্ন ত্রুটিকে হ্যান্ডল করতে পারে। কিন্তু, এই উদাহরণে, আমরা সমস্ত ত্রুটিতে আমাদের কাস্টম এরর হ্যান্ডলার ব্যবহার করতে চাই:
set_error_handler("customError");
আমরা আমাদের কাস্টম ফাংশনকে সমস্ত ত্রুটিগুলি হাতকরার ইচ্ছা করি, তাই set_error_handler() কেবল একটি প্যারামিটার প্রয়োগ করা হয়, দ্বিতীয়টি প্যারামিটার এড়ানো যেতে পারে যাতে ত্রুটির স্তর নির্ধারণ করা যায়。
উদাহরণ
এই ত্রুটি হ্যান্ডলার পরীক্ষা করতে, অস্তিত্বহীন বিন্যাসটিকে প্রদর্শন করার মাধ্যমে
<?php //error handler function function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr"; } //set error handler set_error_handler("customError"); //trigger error echo($test); ?>
The output of the above code should be similar to this:
Error: [8] Undefined variable: test
ত্রুটি ঘটানো
স্ক্রিপ্টের যে কোনো স্থানে ব্যবহারকারীর ইনপুট ব্যর্থ হলে, ত্রুটি ঘটানোর একটি অত্যন্ত উপযুক্ত পদ্ধতি।PHP-তে, এই কাজ trigger_error() দ্বারা করা হয়
উদাহরণ
এই উদাহরণে, "test" বিন্যাস "1"-র উপর থাকলে, ত্রুটি ঘটবে:
<?php $test=2; if ($test>1) { trigger_error("Value must be 1 or below"); } ?>
The output of the above code should be similar to this:
Notice: Value must be 1 or below in C:\webfolder\test.php on line 6
স্ক্রিপ্টের যে কোনো স্থানে ত্রুটি ঘটাতে পারেন, দ্বিতীয় পারামিটার দ্বারা, আপনি ঘটানো ত্রুটির স্তর নির্ধারণ করতে পারেন
সম্ভাব্য ত্রুটির ধরন:
- E_USER_ERROR - মৃত ব্যবহারকারী দ্বারা রান-টাইম ত্রুটি।ত্রুটি পুনরুদ্ধার করা যায় না।স্ক্রিপ্ট চলাকালীন নিষ্ক্রিয় হয়
- E_USER_WARNING - অমৃত ব্যবহারকারী দ্বারা রান-টাইম সতর্কতা।স্ক্রিপ্ট চলাকালীন নিষ্ক্রিয় হয় না
- E_USER_NOTICE - ডিফল্ট।ব্যবহারকারী দ্বারা রান-টাইম নোটিস।স্ক্রিপ্ট ত্রুটির সম্ভাব্যতা খুঁজে পায়, স্ক্রিপ্ট সঠিকভাবে চলাকালীনও ঘটতে পারে
উদাহরণ
এই উদাহরণে, "test" বিন্যাস "1"-র উপর থাকলে, E_USER_WARNING ত্রুটি ঘটবে।E_USER_WARNING ঘটলে, আমরা আমাদের নিজস্ব ত্রুটি হ্যান্ডলার ব্যবহার করবো এবং স্ক্রিপ্ট শেষ করবো:
<?php //error handler function function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br />"; echo "স্ক্রিপ্ট শেষ"; die(); } //set error handler set_error_handler("customError",E_USER_WARNING); //trigger error $test=2; if ($test>1) { trigger_error("Value must be 1 or below",E_USER_WARNING); } ?>
The output of the above code should be similar to this:
Error: [512] Value must be 1 or below স্ক্রিপ্ট শেষ
এখন, আমরা নিজের ত্রুটি তৈরি করা এবং তাদের কিভাবে স্পর্শ করবো এবং তা কিভাবে রেকর্ড করা হয়, আমরা তা অধ্যয়ন করবো
ত্রুটির রেকর্ডিং
ডিফল্টভাবে, php.ini-এর error_log কনফিগারেশন অনুযায়ী, PHP ত্রুটির রেকর্ডিং সিস্টেম বা ফাইলে ত্রুটির রেকর্ডিং পাঠায়।error_log() ফাংশন ব্যবহার করে, আপনি নির্দিষ্ট ফাইল বা দূরস্থ গন্তব্যে ত্রুটির রেকর্ডিং পাঠাতে পারেন
আপনার নিজের ইমেইলের মাধ্যমে ত্রুটির সংবাদ পাঠানো, এটা নির্দিষ্ট ত্রুটির সংবাদ পাওয়ার একটি ভালো পদ্ধতি
E-Mail দ্বারা ত্রুটির সংবাদ পাঠানো
In the following example, if a specific error occurs, we will send an email with the error message and end the script:
<?php //error handler function function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br />"; echo "Webmaster has been notified"; error_log("Error: [$errno] $errstr",1, "someone@example.com","From: webmaster@example.com"); } //set error handler set_error_handler("customError",E_USER_WARNING); //trigger error $test=2; if ($test>1) { trigger_error("Value must be 1 or below",E_USER_WARNING); } ?>
The output of the above code should be similar to this:
Error: [512] Value must be 1 or below Webmaster has been notified
The email received from the above code is similar to this:
Error: [512] Value must be 1 or below
This method is not suitable for all errors. Routine errors should be logged on the server using the default PHP logging system.
- Previous Page PHP Secure E-mail
- Next Page PHP Exception