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

السلام عليكم ورحمة الله وبركاته,,

كثيراً ما تكتب سكربت وتجد انه لا يعمل عند بعض الناس بسبب انك استخدمت دالة معطلة على السيرفر ويكون هناك البديل لهذه الدالة ولكن قد تجد هذه الدالة معطلة في سيرفرات البعض الآخر (انا أفترض فقط لما أرى مثل هذا ..)

الجميع يعلم ان تعطيل الدوال يتم كالآتي:

نقوم بفتح الملف php.ini ثم نقوم بالبحث عن .. disable_functions =
ونقوم بوضع الدوال التي نريد تعطيلها ويتم الفصل بين الدوال التي نريد تعطيلها بفاصلة مثال: ..

disable_functions = addslashes,stripslashes

ثم نقوم بعمل إعادة تشغيل للسيرفر ..

*هذه أمثلة فقط فلا ينصح ابداً بتعطيل هذه الدوال ..

طيب الأن وقد قمنا بتعطيل بعض الدوال ..

هل لنا أن نعرض تلك الدوال كمثلاًً ملف معلومات لبعض الأشياء الموجودة على السيرفر ومن ضمنها الدوال المعطلة ؟
الإجابة نعم بكل تأكيد فالPHP مرنة جداً في كل شئ ..

فلو راجعنا المانوال لوجدنا دالة بإسم ini_get
من إسمها :) تجد انه ستقوم بالوظيفة التي نريدها ..
نأتى الأن لشرح إستخدام الدالة ..
ini_get(الإعداد الموجود بملف php.ini)
وهى تقوم بإرجاع قيمة الإعداد بدون إسمه على هيئة string
وبمثال بسيط سنقوم بعرض جميع الدوال المعطلة

echo ini_get('disable_functions');

هذا سيقوم بعرض الدوال المعطلة كما كتبت وفصلت بفاصلة في ملف php.ini واذا لا توجد دوال معطلة سيرجع قيمة فارغة فيمكنك التحقق من ان القيمة غير فارغة قبل عرض الدوال ..
او يمكن عرض جميع الدوال عن طريق:

// وضع الدوال المعطلة في متغير
$disabled_functions = ini_get('disable_functions');
// وضع الدوال في مصفوفة
$disabled_functions_array = explode(',', $disabled_functions);
foreach($disabled_functions_array AS $func)
{
echo $func . "
"
;
}

الآن كيف يمكننا التحقق من ان دالتنا غير معطلة !!؟ كمثال الدالة copy فكما نعلم معظم السيرفرات تقوم بتعطيل هذه الدالة وأقصد السيرفرات العربية ..

نقوم بكل بساطة بإستخدام الدالة function_exists فهى ليس كما يتصور البعض دالة للتحقق من ان هناك دالة معينة موجودة في إصدارة الPHP ولكنها للتحقق من ان الدالة تم تعريفها واذا تم تعطيل احد الدوال فتلقائياً لا تعرف ..

ماذا تعلمنا في هذا الدرس الصغير ..

  1. تعطيل الدوال
  2. عرض الدوال المعطلة
  3. التحقق من ان هنا دالة معينة غير معرفة