php - আমি কিভাবে পিএইচপি ত্রুটি প্রদর্শন করতে পারি?




error-reporting (16)

Apache মডিউল হিসাবে পিএইচপি ব্যবহার করার সময়, আমরা অপাচি কনফিগারেশন ফাইল (যেমন httpd.conf) এবং। Htaccess ফাইলগুলিতে নির্দেশাবলী ব্যবহার করে কনফিগারেশন সেটিংস পরিবর্তন করতে পারি। আপনাকে এটিকে করার জন্য "ওভাররাইড বিকল্পগুলিকে অনুমতি দিন" বা "সমস্তকে অভারাইডাইড করুন" সুবিধাগুলির প্রয়োজন হবে।

এটা যাচাই কর

http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess

আমি আমার PHP ini ফাইল চেক করেছি এবং প্রদর্শন ত্রুটি সেট করা হয় এবং ত্রুটি রিপোর্টিং E_ALL । আমি আমার অ্যাপাচি ওয়েব সার্ভারটি পুনরায় চালু করেছি।

আমি এমনকি আমার স্ক্রিপ্টের শীর্ষে এই লাইনগুলি রেখেছি, এবং এটি সহজ পার্স ত্রুটিগুলিও ধরতে পারে না। উদাহরণস্বরূপ, আমি একটি "$" দিয়ে ভেরিয়েবল ঘোষণা করি এবং আমি বিবৃতি বন্ধ করে না ";" । কিন্তু আমার সমস্ত স্ক্রিপ্ট এই ত্রুটিগুলির উপর একটি ফাঁকা পৃষ্ঠা দেখায়, তবে আমি আসলে আমার ব্রাউজার আউটপুটে ত্রুটিগুলি দেখতে চাই।

error_reporting(E_ALL);
ini_set('display_errors', 1);

কি বাকি আছে?


আপনাকে যা করতে হবে তার সব ত্রুটি প্রদর্শন করতে:

1. আপনি ব্রাউজার থেকে কল করছেন পিএইচপি স্ক্রিপ্ট এই লাইন আছে (সাধারণত index.php ):

error_reporting(E_ALL);
ini_set('display_errors', '1');

2. (ক) এই স্ক্রিপ্টটির কোন সিনট্যাক্স ত্রুটি নেই তা নিশ্চিত করুন

-অথবা-

2. (b) আপনার php.ini display_errors = On করুন

অন্যথায়, এটা এমনকি 2 লাইন চালানো যাবে না!

আপনি আপনার স্ক্রিপ্টে (কমান্ড লাইনে) চলমান সিনট্যাক্স ত্রুটিগুলির জন্য চেক করতে পারেন:

php -l index.php

যদি আপনি অন্য পিএইচপি স্ক্রিপ্ট থেকে স্ক্রিপ্টটি অন্তর্ভুক্ত করেন তবে এটি অন্তর্ভুক্ত স্ক্রিপ্টে সিনট্যাক্স ত্রুটি প্রদর্শন করবে । উদাহরণ স্বরূপ:

index.php

error_reporting(E_ALL);
ini_set('display_errors', '1');

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';

my_script.php

adjfkj // This syntax error will be displayed in the browser

আপনার php.ini ভিতরে:

display_errors = on

তারপর আপনার ওয়েব সার্ভার পুনরায় আরম্ভ করুন।


আপনার পিএইচপি ফাইল যেখানে ফোল্ডারে php.ini নামে একটি ফাইল তৈরি করুন।

Php.ini এর ভিতরে নিচের কোড যুক্ত করুন (আমি কোড দেখাচ্ছে একটি সহজ ত্রুটি দিচ্ছি):

display_errors = on

display_startup_errors = on

আপনি নিজের নিজস্ব কাস্টম ত্রুটি হ্যান্ডলার যোগ করতে পারেন, যা অতিরিক্ত ডিবাগ তথ্য সরবরাহ করতে পারে। উপরন্তু আপনি ইমেল মাধ্যমে আপনাকে পাঠাতে সেট আপ করতে পারেন।

function ERR_HANDLER($errno ,$errstr, $errfile, $errline){
    $msg="<b>Someting bad happened.</b> [$errno] $errstr <br><br>
    <b>File:</b> $errfile <br>
    <b>Line:</b> $errline <br>
    <pre>".json_encode(debug_backtrace(), JSON_PRETTY_PRINT)."</pre> <br>";

    echo $msg;

    return false;
}

function EXC_HANDLER($exception){
    ERR_HANDLER(0,$exception->getMessage(),$exception->getFile(),$exception->getLine());
}

function shutDownFunction() {
    $error = error_get_last();
    if ($error["type"] == 1) {
        ERR_HANDLER($error["type"],$error["message"],$error["file"],$error["line"]);
    }
}

set_error_handler ("ERR_HANDLER", E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
register_shutdown_function("shutdownFunction");
set_exception_handler("EXC_HANDLER");

আপনি নীচের মত কিছু করতে পারেন:

আপনার মূল সূচক ফাইলের মধ্যে পরামিতি নীচে সেট করুন

    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

তারপর আপনার প্রয়োজনের উপর ভিত্তি করে আপনি যেটি প্রদর্শন করতে চান তা চয়ন করতে পারেন:

সমস্ত ত্রুটি, সতর্কতা এবং নোটিশ জন্য

    error_reporting(E_ALL); OR error_reporting(-1);

সমস্ত ত্রুটি জন্য

    error_reporting(E_ERROR);

সমস্ত সতর্কবার্তা জন্য

    error_reporting(E_WARNING);

সব নোটিশ জন্য

    error_reporting(E_NOTICE);

আরো তথ্যের জন্য এখানে চেক here


আমরা এখন পিএইচপি 7 রান করছি, এখানে প্রদত্ত উত্তর সঠিক নয়। ফ্রাঙ্ক ফোর্টের একমাত্র ঠিক আছে, তিনি পিএইচপি 7 সম্পর্কে কথা বলেন। অন্যদিকে, চেষ্টা / ধরাতে ত্রুটি ধরার চেষ্টা করার পরিবর্তে আপনি একটি কৌশল ব্যবহার করতে পারেন: অন্তর্ভুক্ত ব্যবহার করুন। এখানে কোড 3 টুকরা:

ফাইল: tst1.php

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
// Missing " and ;
echo "Testing
?>  

পিএইচপি 7 তে এটি চালানো কিছুই দেখাবে না

এখন, চেষ্টা করে দেখুন:

ফাইল: tst2.php

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
include ("tst3.php");
?> 

ফাইল: tst3.php

<?php
// Missing " and ;
echo "Testing
?>  

এখন tst2 রান করুন যা ত্রুটি রিপোর্টিং সেট করে তারপর tst3 অন্তর্ভুক্ত করুন। তুমি দেখবে:

পার্স ত্রুটি: সিনট্যাক্স ত্রুটি, ফাইলের অপ্রত্যাশিত সমাপ্তি, পরিবর্তনশীল (T_VARIABLE) অথবা $ {(T_DOLLAR_OPEN_CURLY_BRACES) অথবা {$ (T_CURLY_OPEN) লাইন 4 এ tst3.php তে প্রত্যাশিত


আমি সাধারণত আমার প্লেইন পিএইচপি প্রকল্পে নিম্নলিখিত কোডটি নিয়ে যাব যা খুব ছোট, যদি প্রকল্পটি বড় হয়ে যায় তবে আমি সুপারিশ করব।

if(!defined('ENVIRONMENT')){
    define('ENVIRONMENT','DEVELOPMENT');
}

$base_url   =   null;

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'DEVELOPMENT':
            $base_url   =   'http://localhost/product/';
            ini_set('display_errors',1);
            ini_set('display_startup_errors',1);
            error_reporting(E_ALL|E_STRICT);
            break;

        case 'PRODUCTION':
            $base_url   =   'Prod url'; /* https://google.com */
            error_reporting(0);
            /* Mechanism to log errors */
            break;

        default:
            exit('The application environment is not set correctly.');
    }
}

আশাকরি এটা সাহায্য করবে.


এই কাজ করবে:

<?php
     error_reporting(E_ALL);
     ini_set('display_errors', 1);    
?>

এই সবসময় আমার জন্য কাজ করে:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

যাইহোক, এটি পার্স ত্রুটিগুলি দেখানোর জন্য পিএইচপি তৈরি করে না - এই ত্রুটিগুলি দেখানোর একমাত্র উপায় হল এই লাইনটি দিয়ে আপনার php.ini সংশোধন করা:

display_errors = on

এটি একটি দ্রুত ডিবাগিংয়ের জন্য আপনি ব্যবহার করতে পারেন এমন সর্বোত্তম / সহজ / দ্রুত সমাধান, এটি ব্যতিক্রমগুলি ধরার সাথে আপনার কোডটি ঘিরে রাখতে হয়। আমি যখন উত্পাদন উপর দ্রুত কিছু চেক করতে চাই আমি কি করছি।

try {

//Page code

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

আশা করি এটা কাজে লাগবে.


কিছু ওয়েব হোস্টিং প্রদানকারীরা আপনাকে .htaccess ফাইলে পিএইচপি প্যারামিটারগুলি পরিবর্তন করার অনুমতি দেয়।

আপনি নিম্নলিখিত লাইন যোগ করতে পারেন:

php_value display_errors 1

আমি আপনার মত একই সমস্যা ছিল এবং এই সমাধান এটি সংশোধন করা হয়েছে।


যদি আপনার xdebug ইনস্টল করা থাকে তবে আপনি সেটিংস দ্বারা প্রতিটি সেটিংকে ওভাররাইড করতে পারেন:

xdebug.force_display_errors = 1;
xdebug.force_error_reporting = -1;

force_display_errors

প্রকার: int, ডিফল্ট মান: 0, Xdebug এ উপস্থাপিত> = 2.3 যদি এই সেটিংটি 1 সেট করা থাকে তবে ত্রুটিগুলি সর্বদা প্রদর্শিত হবে, কোনও ব্যাপার না পিএইচপি এর display_errors সেটিং কি।

force_error_reporting

প্রকার: int, ডিফল্ট মান: 0, Xdebug এ উপস্থাপিত> = 2.3 এই সেটিংটি একটি বিটমাস্ক, যেমন error_reporting। এই বিটমাস্কটি যুক্তিযুক্তভাবে ত্রুটিযুক্ত হবে বিটমাস্ক দ্বারা উপস্থাপিত বিটমাসকে ত্রুটিযুক্ত করে যা ত্রুটিগুলি প্রদর্শন করা উচিত। এই সেটিংটি শুধুমাত্র php.ini এ তৈরি করা যেতে পারে এবং আপনাকে কিছু ত্রুটিগুলি ini_set () এর সাথে কোনও অ্যাপ্লিকেশন কীভাবে দেখায় তা দেখানোর জন্য জোর দেয়।


যদি উপরের সমস্ত উত্তরের অনুসরণ (অথবা আপনি আপনার php.ini ফাইল সম্পাদনা করতে না পারেন) সত্ত্বেও, আপনি এখনও একটি ত্রুটি বার্তা পেতে পারছেন না, একটি নতুন পিএইচপি ফাইল তৈরি করার চেষ্টা করুন যা ত্রুটির রিপোর্টিং সক্ষম করে এবং তারপর সমস্যা ফাইল অন্তর্ভুক্ত করে। উদাহরণ:

error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once('problem_file.php');

আমার php.ini ফাইলে সবকিছু ঠিকঠাক রেখে সত্ত্বেও, এটি একটিমাত্র উপায় যা আমি একটি নামস্থান ত্রুটি ধরতে পারি। আমার সঠিক দৃশ্যকল্প ছিল:

//file1.php
namespace a\b;
class x {
    ...
}

//file2.php
namespace c\d;
use c\d\x; //Dies because it's not sure which 'x' class to use
class x {
    ...
}

রানটাইম এ ত্রুটি আউটপুট সক্ষম করার সময় আপনি পার্স ত্রুটিগুলি ধরতে পারবেন না, কারণ এটি আসলে কার্য সম্পাদন করার আগে ফাইলটিকে পার্স করা হয় (এবং এটির মধ্যে এটির একটি ত্রুটি দেখা দেয়, এটি কোনও কার্যকর করবে না)। আপনাকে অবশ্যই প্রকৃত সার্ভার কনফিগারেশন পরিবর্তন করতে হবে যাতে display_errors চালু হয় এবং অনুমোদন error_reporting স্তরটি ব্যবহার করা হয়। যদি আপনার php.ini অ্যাক্সেস না থাকে তবে আপনি সার্ভারের উপর নির্ভর করে .htaccess বা অনুরূপ ব্যবহার করতে সক্ষম হবেন।

এই প্রশ্ন অতিরিক্ত তথ্য প্রদান করতে পারে।


শুধু লেখো:

error_reporting(-1);




error-reporting