النتائج 1 إلى 7 من 7

الموضوع: أخطاء PHP الشائعة [الأسباب المحتملة والحلول]

  1. #1

    أخطاء PHP الشائعة [الأسباب المحتملة والحلول]



    بسم الله الرحمن الرحيم

    يبيّن الشرح أدناه الاسباب المحتملة لمعظم أخطاء PHP الشائعة:-

    Parse error إغفال فاصلة منقوطة، أو أقواس معكوفة غير مغلقة، أو أقواس عادية، أو علامات اقتباس، أو إستخدام علامة إقتباس في سلسلة محرفية دون تجاوزها/الهروب منها

    Empty variable value إغفال $ قبل إسم المتحول، أو عدم كتابة إسم متحول بشكل صحيح، أو نطاق متحول (scope) غير مناسب، أو كون الإعداد register_globals معطّلآ

    Undifined variable الرجوع إلى متحول قبل إعطائه قيمة

    Call to undefined function عدم صحة كتابة إسم التابع، أو تعريف التابع بعد إستخدامه في (PHP 3 فقط)، أو مستند يحوي تعريف تابع ولم يتم تضمينه بشكل صحيح

    Cannot redeclare function مستند يحوي تعريف تابع وتم تضمينه مرتين

    Headers already sent وجود فراغ أبيض في البرنامج النصي(السكربت) قبل علّامات PHP، أو كون البيانات قد طبعت من قبل، أو تم تضمين ملف

    --------------------------------------------------------

    يمثل الخطأ القواعدي اللفظي ( syntactical) أول خطأ قد تواجهه، وهو يمنع تنفيذ برامجك النصية، وسوف ينجم مثل عن هذا الخطأ رسائل تشبه التالي:

    كود PHP:
    Parse errorparse errorunexpected ';' in /Users/Sites/test.php on line 54 
    لتجنب إرتكاب هذا النوع من الاخطاء في برامجك، تأكد من :-

    - أنه كل عبارة (وليس بنى اللغة مثل الحلقات والتعابير الشرطية) بفاصلة منقوطة
    - قم بموازنة علامات الاقبتاس والاقواس على اختلاف انواعها (يجب أن يتم إغلاق كل قوس وعلامة اقتباس)
    - إلتزم بإستخدام علامات الاقتباس بشكل متوافق، أي يجب إغلاق علامات الاقتباس المفردة بعلامة إقتباس مفردة فقط، وكذلك الحال مع علامات الاقتباس المزدوجة
    - قم بتجاوز/الهروب من جميع علامات الاقتباس المفردة المزدوجة ضمن عبارات print( )

    يجب أن تنتبه لشيء آخر أيضآ يخص الاخطاء القواعدية، ذلك أن مجرد قول رسالة خطأ PHP بأن الخطأ في السطر 12، فهذا لا يعني البته أن الخطأ في هذا السطربالفعل. وعلى الاقل، لا يمكن أن يكون هناك إختلاف بين ما تعتقد PHP بأنه السطر 12 وما هو عليه في محرر نصوصك. لذلك، ومع علمك بفائدة التوجيه الذي تقدمه PHP لملاحقة المشكلة، عامل رقم السطر كمرجع لنقطة الانطلاق أكثر منه الموضع المطلق للمشكلة

    -------------------------------------

    ينجم النوع الثاني من الاخطاء التي قد تواجهها عن سوء إستخدام تابع، وتقع مثل هذه الاخطاء مثلآ عند إستدعاء التابع setcookie( ) أو header( ) بعد تلقي مستعرض الويب لشيفرة HTML، أو عند إستدعاء تابع بدون إستخدام الوسطاء المناسبين. وتكشف PHP هذا الخطأ عند تنفيذ الشفرة.
    أنظر المثال أدناه

    كود PHP:
    WarningWrong parameter count for round ( ) in /Users/Sites/test.php on line 54 
    -------------------------------------

    أما النوع الثالث من الاخطاء فلا يتعلق باللغة PHP على الاطلاق، وإنما هو خطأ من قبل المبرمج أو خطأ منطقي (معظم الاخطاء هي أخطاء مبرمج!). ويعود السبب إلى فشل المبرمج في استخدام إسم متحول صحيح. فإذا فعلت ذلك، لن تشاهد رسالة خطأ مثل الرسائل التي وجدتها في الامثلة السابقة، وإنما ستشاهد نتائج غريبة أو غير متوقعة. يعتبر هذا النوع من الاخطاء الأصعب على الاطلاق، ذلك أن PHP لن تقم لك مفتاحآ للدلالة على المشكلة وكيفية تصويبها، وستحتاج هنا إلى عمل إستكشافي لمعرفة الاخطاء المرتكبة ومواضعها.

    لتتبع اخطاء برامجك النصية قم بالتالي :

    - إعرض مصدر HTML
    سوف تقدم بعض المستعرضات صفحة فارغة عند وقوع خطأ PHP وقد يكون عرض شيفرة المصدر الطريقة الوحيدة لمعرفة المشكلة، وإذا لم يكن الخطأ خطأ PHP، فقد يكون خطأ HTML
    - إستخدم التعليقات:
    كما يمكنك إستخدام التعليقات لتوثيق برامجك النصية، يمكنك إستخدامها أيضآ لإبعاد الاسطر الإشكالية. وإذا كانت PHP تشير عليك بوجود خطأ في السطر 12، فقد يخلصك جعله تعليقآ من الخطأ، وإذا لم يجد ذلك نفعآ، فستدرك بأن الخطأ في موضع آخر
    - إستدع التابعين print( ) و echo ( ) ، عادة ما نستخدم عبارات print ( ) لنحصل على ملاحظات عما يحدث عد تنفيذ البرنامج النصي، فعندما يقوم برنامج نصي على عدة خطوات، فقد يكون من السهولة بمكان معرفة ما إذا كانت المشكلة تقع في الخطوة 2 أو الخطوة 5 مثلآ، ويمكنك بإستخدام عبارة rint ( ) حصر المشكلة في موضع ضيق للغاية

    يمكن تحقيق تتبع أخطاء أكثر تعقيدآ بعرض ملاحظات أثناء تنفيذ البرنامج النصي
    أنظر المثال أدناه

    كود PHP:
    The form has been submitted!
    The username and password were enterd!
    Arow returned from the database
    - لاحق المتحولات :
    بإستخدام التابع print ( ) أو echo ( ) أو print_r ( ) أو var_dump ( ) يمكنك ملاحقة قيم المتحولات مع تنفيذ برنامجك النصي
    أنظر المثال أدناه

    كود PHP:
    Username was submitted as: name
    Password was submitted 
    as: password 
    من السهولة أن يفشل البرنامج النصي في عمله جراء رجوعك إلى متحول الخطأ، أو إلى المتحول الصحيح بإسم خاطيء، أو لأن المتحول لا يملك القيمة التي تتوقعها منه. وللتحقق من هذه الاحتمالات، إستخدم عبارة print ( ) أو echo ( ) لطباعة قيم المتحولات في المواضع الهامة من برامك النصية.

    وبالنسبة لأنواع المتحولات الاكثر تعقيدآ (المصفوفات والكائنات)، إستخدم التابعين print_r ( ) و var_dump ( ) اللذين سيطبعا قيمها دون الحاجة إلى حلقات. ويحقق التابعان نفس المهمة، رغم أن التابع var_dump ( ) أكثر تفصيلآ في تقريره من التابع print_r ( )

    -------------------------------------------------
    ملاحظات ونصائح مهمة :

    - تتضمن معظم محررات النصوص أدوات للتحقق من توازن الاقواس وعلامات الاقتباس
    - إذا لم تستطع العثور على خطأ المفسر في برنامج نصي معقد، فإبدأ بإستخدام التعليقات /**/ لجعل شيفرة PHP بأكملها غير فعالة. وتابع بعد ذلك في الغاء التعليق عن المقاطع واحدآ تلو الاخر ونفذ البرنامج النصي، لتصل أخيرآ إلى معرفة الاسطر التي تسبب الخطأ
    - يفضل بعض المبرمجين الاختبار العكسي للتقليل من احتمال وقوع الاخطاء المنطقية، ونقصد بالاختبار العكسي النهج الذي يحقق تبديلآ للشروط فمثلآ :

    كود PHP:
    if  ($variable 5) ( ... 
    قد لا يبدو غير صحيح ضمن 500 سطر من الشيفرة، ولكنه يسبب مشكلات لأن الشرط سيكون TRUE دائمآ، لذلك عدّله إلى :

    كود PHP:
    if  ($variable ) ( ... 
    لتحصل بذلك مباشرة على علم أحمر، إذ لا يمكن تعيين قيمة للعدد 5
    - لجعل نتائج PRINT_R ( ) و VAR_DUMP ( ) أكثر قابلية في مستعرض الويب، يمكن وضعها دائمآ ضمن علّامات <pre> (مسبقة التنسيق)

    كود PHP:
    echo '<pre>';
    print_r  ($var) ;
    echo 
    '</pre>'
    إنتظرونا في درس مقبل
    تمنياتنا للجميع بدوام الصحة والعافية





    __________________
    ₪₪₪₪₪₪₪₪₪₪₪₪₪
    طبيب دوت كوم
    Www.6abib.coM
    ثقافة صحية أوسع وأشمل
    ₪₪₪₪₪₪₪₪₪₪₪₪₪


  2. #2


    شرح رائع جداً
    جزاك الله خيراً أخوي وبارك الله فيك

    ننتظر دروسك بفارغ الصبر





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

  3. #3
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2002
    المشاركات
    2,289


    شكرا لك اخوي طبيب

    شرح جميل ورائع وفقك الله لما يحبه ويرضاه






  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2003
    المشاركات
    461


    100%
    :nice:

    درس جميل جدا





    __________________
    AlwatanVoice, www.alwatanvoice.com
    Almashroo, www.almashroo.com

    Pal Coder == Palestinian Coder

  5. #5
    عضو فعال
    تاريخ التسجيل
    Aug 2004
    المشاركات
    1,327


    الله يمتعك اخوى بالصحه والعافيه مشكور





    __________________
    اقم صلاتك قبل مماتك اقم صلاتك تنعم بحياتك
    صلى قبل ان يصلى عليك - لا حول ولا قوه الا بالله
    فزلكة وحداقه | خدمات الشبكات والانترنت | طريق الاستضافه

  6. #6


    بارك الله فيك يالغالي شرح جداً وافي ياوافي





    __________________
    +======================+
    شبكة تصميم لتطوير المواقع
    www.tsmim.com
    سكربتات حصرية - وتصاميم مميزة لموقعك
    +======================+

  7. #7
    عضو فعال
    تاريخ التسجيل
    Feb 2004
    المشاركات
    1,318


    جزاك الله خير يا الغالي





    __________________
    سبحان الله وبحمده سبحان الله العظيم

    منتديات ترنيمة





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض