سؤال

وأستخدمه PHP 4، والطريقة الوحيدة أعرف أن تسبب خطأ ويتوقف كل شيء يدعو يموت (). ولكن في حالة أركض في الخطأ في وقت لاحق ولا تذكر حيث دخولها من وأود أن تحديد الصفحة ورقم السطر الذي يموت () وقع على (مثل تفعل الأخطاء فب أخرى). هل هناك طريقة للقيام بذلك؟

وشكرا!

هل كانت مفيدة؟

المحلول

ويجب أن ننظر إلى الثوابت السحرية.

echo __LINE__; // Line number

ويمكنك أيضا تشغيل error_log () للإرسال أخطاء بهدوء إلى السجل.

نصائح أخرى

وأعتقد أنك يجب أن تستخدم trigger_error () ل توليد E_USER_ERROR أو E_USER_WARNING. وهذا يسمح لك للسيطرة على السلوك في التفاصيل. على سبيل المثال يمكنك تحديد ما إذا كان ينبغي أن تظهر الرسائل على الإطلاق باستخدام error_reporting () أو التعامل مع E_USER_WARNING : ق صراحة باستخدام set_error_handler ()

وأبسط طريقة هي استخدام:

echo __FILE__ . ": line " . __LINE__;
die();

إذا كنت لاستخدام PHP5، هل يمكن أيضا استخدام الاستثناءات:

throw new Exception("My error message!");

وألقيت تتبع المكدس سوف تكشف مكدس الاستدعاءات كله وخط هذه القطعة.

و(تحرير: شكرا ل[John ايزاك] و [Emil H] ليبلغني أن الاستثناءات لم يتم إضافة إلى PHP حتى PHP5)

وبالإضافة إلىJukka Dahlbom و @اقتراحات أولافور واج وكنت قد تنظر أيضا في استخدام debug_backtrace() .

error_log() للإبلاغ عن الخطأ و <لأ href = "HTTP: // مستندات. php.net/debug_backtrace "يختلط =" نوفولو noreferrer "> debug_backtrace() للحصول على التصحيح. هل يمكن أيضا كتابة الخاصة وظيفة معالجة الأخطاء (انظر set_error_handler() ) الجمع بين الاثنين معا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top