في هذه المقالة أريد أن أقدم لك الإجراء خطوة بخطوة لتمكين أو تعطيل وظائف php الأصلية وتحرير التوجيه "disable_functions" في ملف php.ini.
في بعض الأحيان يلزم تخصيص تكوين PHP الافتراضي على الخادم الخاص بك لاستيعاب توافق نظامك مع بيئة الإنتاج.
أنا مؤلف Inspector.dev، حزمة المراقبة في الوقت الفعلي لـ Laravel وSymfony. تستخدم هذه الحزمة وظائف pro_open وproc_Close php الأصلية لإجراء نقل البيانات من الخادم الخاص بك إلى Inspector API بشكل غير متزامن.
يمكن أيضًا تهيئتها لاستخدام وظائف CURL الأصلية لـ PHP والتي يتم تمكينها افتراضيًا، ولكن في هذه الحالة سترسل بيانات المراقبة إلى Inspector بطريقة متزامنة كما تفعل الحزم الأخرى مثل Sentry وBugsnag وما إلى ذلك. يعني أن تطبيقك قد يتباطأ قليلاً لأن محرك php يحتاج إلى الانتظار قبل إنهاء الاتصال بالعميل.
اتصل بي بعض المطورين مؤخرًا بسبب تعطيل وظائف proc_open وproc_Close في تكوين php الخاص بهم، لذا يحتاجون إلى إلغاء قفلها للاستفادة من إرسال البيانات غير المتزامنة.
إنه أمر نادر جدًا ولكني قررت كتابة هذا البرنامج التعليمي كمورد دعم لحالة الاستخدام هذه.
ملف php.ini هو ملف التكوين لـ PHP. يحتوي الملف على قائمة بأزواج المفاتيح/القيمة تسمى "التوجيهات". يتم تجميع التوجيهات في أقسام، على الرغم من أن هذه هي في الأساس لأغراض تنظيمية.
عند بدء تشغيل PHP، فإنه يقرأ هذا الملف ويقوم بإعداد بنيات البيانات الداخلية لتخزين التكوين. أثناء التنفيذ، تشير PHP إلى هياكل البيانات الداخلية هذه لتحديد كيفية التصرف في العديد من المجالات الرئيسية، مثل: معالجة الأخطاء وتسجيلها، وحدود الموارد (الذاكرة، ووقت التنفيذ)، وتحميل الملفات، واتصالات قاعدة البيانات، والمزيد.
بالنسبة لشخص يتساءل أيضًا: يمكن لـ PHP العمل حتى لو لم يكن هناك ملف php.ini، فإنه ببساطة سيطبق القيم الافتراضية على جميع التوجيهات.
لمن ليس على دراية به، إليك مثال لملف php.ini:
https://github.com/php/php-src/blob/master/php.ini-production
بتحرير ملف php.ini يمكننا تعطيل وظائف PHP الأصلية التي لن تتمكن من استدعائها داخل كود PHP الخاص بك.
يتم استخدام هذه الميزة أحيانًا لتقييد استخدام بعض الوظائف في بيئات الاستضافة المشتركة نظرًا لأن الاستخدام الخاطئ لها يمكن أن يسبب مشكلات أمنية للمستخدمين الآخرين. عادةً ما يتم تعطيل وظائف مثل exec()، ولكن في بعض الأحيان يكون موفري الخوادم متحفظين للغاية ويمكنهم تعطيل الوظائف المطلوبة في مهام البرمجة اليومية.
قم بتشغيل الأمر أدناه في محطة جهازك للحصول على الموقع الحالي للملف (يعمل مع كل من Win وUnix):
php --ini
المواقع الشائعة: /etc/php.ini، /etc/php/8.x/php.ini (استبدل x برقم إصدار التثبيت الخاص بك)
لتحرير الملفات الموجودة على الخادم أفضل استخدام محرر vim الذي يجب أن يكون متاحًا في أي جهاز Unix.
// Use the file path from the command above sudo vim /etc/php.ini
قم بالتمرير لأسفل إلى توجيه "disable_functions". يجب أن يكون في النصف الأول من الملف ويحتوي على قائمة بالوظائف مفصولة بفاصلة.
disable_functions=exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
لتحميل التكوينات الجديدة تحتاج إلى إعادة تشغيل PHP. يجب أن تعمل التعليمات الواردة أدناه على معظم الخوادم. يمكنك في النهاية البحث في Google عن نظام تشغيل محدد.
// Change the version of the PHP with what is in use in your machine sudo systemctl restart php8.2-fpm.service
لمزيد من المقالات التقنية يمكنك متابعتي على Linkedin أو X.
Inspector عبارة عن أداة لمراقبة تنفيذ التعليمات البرمجية مصممة خصيصًا لمطوري البرامج. لا تحتاج إلى تثبيت أي شيء على مستوى الخادم، فقط قم بتثبيت حزمة Laravel أو Symfony وستكون جاهزًا للبدء.
إذا كنت تبحث عن مراقبة HTTP، ورؤى استعلام قاعدة البيانات، والقدرة على إعادة توجيه التنبيهات والإشعارات إلى بيئة المراسلة المفضلة لديك، فجرّب Inspector مجانًا. سجل حسابك.
أو تعرف على المزيد على الموقع: https://inspector.dev
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3