PHP هي لغة برمجة نصية قوية تستخدم على نطاق واسع لتطوير الويب، ولكن مثل أي لغة، من السهل الوقوع في الأخطاء التي يمكن أن تكون محبطة لتصحيح الأخطاء. في حين أن بعض الأخطاء بسيطة وسهلة الإصلاح، إلا أن بعضها الآخر قد يكون أكثر تعقيدًا بعض الشيء. تتناول هذه المقالة بعضًا من أخطاء PHP الأكثر شيوعًا وتقدم حلولاً لمساعدتك على حلها بسرعة.
يحدث خطأ في بناء الجملة عندما يواجه مترجم PHP رمزًا لا يتوافق مع البنية المتوقعة. هذه هي الأنواع الأساسية من الأخطاء وغالبًا ما تؤدي إلى خطأ التحليل المروع: خطأ في بناء الجملة، ورسالة رمزية غير متوقعة.
echo "Hello World" // Missing semicolon
تحقق مرة أخرى من الرمز الخاص بك بحثًا عن علامات الترقيم المفقودة أو الإضافية. تأكد من تطابق جميع أقواس الفتح والإغلاق والأقواس وعلامات الاقتباس.
echo "Hello World"; // Fixed
يحدث خطأ "متغير غير محدد" عند محاولة استخدام متغير لم تتم تهيئته. PHP سوف يلقي إشعار: خطأ متغير غير محدد في هذه الحالة.
echo $username; // Undefined variable
تأكد من تهيئة المتغير قبل استخدامه في التعليمات البرمجية الخاصة بك. يمكنك أيضًا منع هذا الإشعار عن طريق التحقق من تعيين المتغير باستخدام isset().
if (isset($username)) { echo $username; } else { echo "No username provided"; }
يحدث هذا الخطأ عند محاولة استدعاء دالة لم يتم تعريفها. يمكن أن يحدث ذلك لأنك أخطأت في كتابة اسم الوظيفة أو نسيت تضمين الملف الضروري الذي يحتوي على الوظيفة.
myFunction(); // Undefined function
تأكد من تعريف الوظيفة بشكل صحيح أو تضمينها في البرنامج النصي الخاص بك. تحقق أيضًا من وجود أخطاء إملائية في اسم الوظيفة.
function myFunction() { echo "Hello World!"; } myFunction(); // Fixed
يحدث هذا الخطأ عندما تحاول PHP تعديل الرؤوس (على سبيل المثال، باستخدام header() أو setcookie()) بعد إرسال الإخراج إلى المتصفح بالفعل. تظهر رسالة الخطأ عادةً بالشكل التالي: تحذير: لا يمكن تعديل معلومات الرأس - الرؤوس التي تم إرسالها بالفعل بواسطة...
echo "Some output"; header("Location: /newpage.php"); // Causes error because output was already sent
تأكد من عدم إرسال أي إخراج (بما في ذلك المسافة البيضاء أو BOM) قبل استدعاء وظيفة الرأس (). إذا كنت بحاجة إلى إعادة توجيه المستخدم، فتأكد من استدعاء header() قبل إنشاء أي مخرجات.
header("Location: /newpage.php"); // This must appear before any echo or print statements exit();
تحدث أخطاء الأذونات عندما لا يمتلك برنامج PHP النصي أذونات القراءة أو الكتابة المناسبة للوصول إلى الملفات أو الدلائل. قد تظهر لك أخطاء مثل تحذير: fopen(/path/to/file): فشل في فتح الدفق: تم رفض الإذن.
التحقق من أذونات الملف والدليل. عادةً، يجب أن يكون لدى مستخدمي خادم الويب أذونات قراءة للملفات وأذونات كتابة للأدلة التي تحدث فيها عمليات التحميل أو معالجة الملفات. استخدم الأمر التالي لضبط الأذونات:
chmod 755 /path/to/directory chmod 644 /path/to/file
ملاحظة: كن حذرًا عند تعيين الأذونات، لأن الإعدادات المفرطة في التساهل يمكن أن تشكل مخاطر أمنية.
عندما ينفد PHP من الذاكرة المخصصة، سترى خطأ فادحًا: خطأ استنفاد حجم الذاكرة المسموح به X بايت. يحدث هذا عندما يستخدم البرنامج النصي ذاكرة أكبر من الحد المحدد في php.ini.
يمكنك زيادة حد الذاكرة مؤقتًا عن طريق إضافة السطر التالي إلى برنامج PHP النصي الخاص بك:
ini_set('memory_limit', '256M'); // Adjust as needed
بدلاً من ذلك، يمكنك زيادة حد الذاكرة بشكل دائم في ملف php.ini:
memory_limit = 256M
تأكد من تحسين التعليمات البرمجية الخاصة بك لتقليل استخدام الذاكرة حيثما أمكن ذلك.
قد يفشل الاتصال بقاعدة بيانات MySQL في بعض الأحيان، مما يؤدي إلى خطأ مثل خطأ فادح: لم يتم اكتشاف mysqli_sql_exception: تم رفض الوصول للمستخدم 'اسم المستخدم'@'المضيف المحلي'.
تأكد من صحة بيانات الاعتماد الخاصة بك ومن تشغيل خادم MySQL. تأكد أيضًا من استخدام وظيفة الاتصال المناسبة. إليك مثال صحيح باستخدام mysqli_connect():
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); if ($mysqli->connect_error) { die("Connection failed: " . $mysqli->connect_error); }
غالبًا ما تفشل عمليات تحميل الملفات بسبب الإعدادات غير الصحيحة أو قيود حجم الملف. قد تواجه أخطاء مثل UPLOAD_ERR_INI_SIZE أو UPLOAD_ERR_FORM_SIZE.
التحقق من إعدادات php.ini التالية وضبطها حسب الحاجة:
file_uploads = On upload_max_filesize = 10M post_max_size = 12M
تأكد أيضًا من أن علامة النموذج الخاصة بك تحتوي على سمة enctype الصحيحة:
يحدث هذا الإشعار عند محاولة الوصول إلى عنصر صفيف غير موجود، مما يتسبب في ظهور إشعار: فهرس غير محدد أو إشعار: خطأ إزاحة غير محدد.
echo $_POST['username']; // Undefined index if 'username' is not in the form data
تحقق دائمًا من وجود مفتاح الصفيف قبل محاولة الوصول إليه. استخدم isset() أو array_key_exists() لمنع هذا الخطأ.
if (isset($_POST['username'])) { echo $_POST['username']; } else { echo "Username not provided."; }
يؤدي PHP إلى ظهور خطأ فادح: لم يتم العثور على خطأ "ClassName" للفئة عند محاولة إنشاء فئة لم يتم تعريفها أو تضمينها بشكل صحيح.
تأكد من تضمين الملف الذي يحتوي على الفئة باستخدام require() أو include(). وبدلاً من ذلك، استخدم وظيفة spl_autoload_register() الخاصة بـ PHP لتحميل ملفات الفئة تلقائيًا.
spl_autoload_register(function ($class_name) { include $class_name . '.php'; }); $object = new ClassName();
إذا استغرق تنفيذ البرنامج النصي PHP وقتًا طويلاً، فقد تواجه خطأ فادحًا: تم تجاوز الحد الأقصى لوقت التنفيذ وهو X ثانية. يحدث هذا عادةً عند العمل مع مجموعات بيانات كبيرة أو استدعاءات واجهة برمجة التطبيقات الخارجية.
يمكنك زيادة الحد الأقصى لوقت التنفيذ مؤقتًا من خلال:
set_time_limit(300); // Extends to 300 seconds (5 minutes)
لتعيينه عالميًا، اضبط توجيه max_execution_time في ملف php.ini:
max_execution_time = 300
أخطاء PHP أمر لا مفر منه، ولكن معرفة كيفية التعامل مع الأخطاء الأكثر شيوعًا يمكن أن يوفر عليك الكثير من الوقت في تصحيح الأخطاء. سواء كانت مشكلة في بناء الجملة، أو مشكلة في اتصال قاعدة البيانات، أو خطأ في إذن الملف، فإن فهم السبب الجذري والحل هو المفتاح لتصبح مطور PHP ماهرًا.
باتباع الإرشادات الواردة في هذه المقالة، يجب أن تكون قادرًا على تحديد هذه المشكلات وحلها بشكل فعال. حافظ على تمكين الإبلاغ عن الأخطاء أثناء التطوير لاكتشاف هذه الأخطاء مبكرًا وضمان عملية ترميز أكثر سلاسة!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3