كيفية استخدام ملف .user.ini
في ServBay: دليل تكوين PHP محليًا
تُعد ServBay بيئة تطوير ويب محلية متكاملة قوية مصممة خصيصًا للمطورين، حيث تدعم عدداً من اللغات والتقنيات، مع إمكانية إدارة مرنة لإصدارات PHP وخيارات ضبط سهلة. في واقع التطوير، قد تتطلب مشاريع مختلفة إعدادات PHP مخصصة، مثل حدود حجم رفع الملفات، حدود الذاكرة أو مستوى تقارير الأخطاء. تعديل ملف php.ini
العام سيؤثر على جميع المشاريع، مما قد يصعب إدارة عدة مشاريع معًا.
ولحسن الحظ، توفر PHP آلية ملف .user.ini
التي تتيح للمطورين تعريف إعدادات PHP مخصصة على مستوى دليل معين وما تحته، دون الحاجة لتعديل ملف php.ini
العام. تدعم ServBay هذه الميزة بشكل كامل، مما يجعل ضبط إعدادات PHP بحسب كل مشروع أو مجلد أمرًا سهلاً وفعالاً.
في هذا المقال، سنستعرض آلية عمل ملف .user.ini
، وكيفية استخدامه ضمن ServBay، مع أمثلة عملية لضبط إعدادات PHP مخصصة لمشروع معين.
مقدمة حول ملف .user.ini
تم تقديم ملف .user.ini
في إصدار PHP 5.3.0 كميزة تهدف لتوفير طريقة أكثر مرونة وأماناً من ضبط معايير PHP عبر php_value
وphp_flag
في إعدادات خوادم الويب (مثل ملف .htaccess
في Apache). يسمح للمطورين بوضع ملف .user.ini
في دليل متاح عبر الويب، بحيث تطبق التعليمات الواردة فيه فقط على هذا المجلد وكافة المجلدات الفرعية.
أبرز الميزات
- نطاق محدود: تعليمات الضبط داخل ملف
.user.ini
تؤثر فقط على الدليل الذي يوجد فيه والفرعية منه، دون المساس بإعداداتphp.ini
العام أو مشاريع أخرى في ServBay. - مرونة عالية: يمكن للمطورين تخصيص إعدادات PHP لكل مشروع حسب الحاجة.
- سهولة الإدارة: لا حاجة لتعديل إعدادات الخادم أو PHP العامة، ما يقلل من مخاطر حدوث تعارضات جعل ضبط الإعدادات أكثر استقلالية وقابلية للنقل.
- لا حاجة لإعادة التشغيل: بخلاف التعديلات على
php.ini
التي تستلزم غالبًا إعادة تشغيل PHP-FPM أو خادم الويب، فعادةً ما تصبح تعديلات.user.ini
سارية تلقائياً بعد فترة زمنية يحددها خيارuser_ini.cache_ttl
(افتراضيًا عادةً 300 ثانية - أي 5 دقائق).
التعليمات التي يمكن ضبطها
ليس بإمكانك ضبط كل معايير PHP من خلال ملف .user.ini
. إمكانية الضبط تعتمد على "وضع التغيير" (Changeable Modes) لكل إعداد. فقط الإعدادات التي تحمل الوضع PHP_INI_USER
أو PHP_INI_PERDIR
أو PHP_INI_ALL
يمكن ضبطها عبر .user.ini
.
من التعليمات الشائعة التي يمكن ضبطها في .user.ini
:
upload_max_filesize
post_max_size
memory_limit
display_errors
log_errors
max_execution_time
session.save_path
date.timezone
أما الإعدادات ذات الوضع PHP_INI_SYSTEM
(مثل extension_dir
, zend_extension
, disable_functions
وغيرها) لا يمكن ضبطها عبر .user.ini
ويجب أن تُعدّل فقط من خلال ملف php.ini
الأساسي أو إعدادات خادم الويب.
للاطلاع على وضع التغيير لأي إعداد، يرجى مراجعة دليل PHP الرسمي لتعليمات php.ini.
استخدام .user.ini
داخل ServBay
عملية استخدام ملف .user.ini
في ServBay مباشرة وسهلة. وفيما يلي الخطوات، وسنستخدم ضبط upload_max_filesize
وmemory_limit
كمثال.
لنفترض أن جذر موقعك موجود في المسار الافتراضي لـ ServBay /Applications/ServBay/www/
، وتريد تخصيص إعدادات PHP لمشروع اسمه myproject
يوجد جذر الويب الخاص به ضمن /Applications/ServBay/www/myproject/public
.
الخطوة 1: تحديد الدليل المستهدف
أولاً، حدد المجلد الذي ترغب بتطبيق إعدادات PHP المخصصة عليه. غالباً سيكون هذا هو جذر الويب الخاص بمشروعك (مثلاً مجلد public
في مشاريع Laravel أو Symfony) أو مجلد فرعي محدد يتطلب إعدادات خاصة.
مثال: /Applications/ServBay/www/myproject/public
الخطوة 2: إنشاء أو تعديل ملف .user.ini
في هذا الدليل، أنشئ ملفًا جديدًا باسم .user.ini
(إذا كان الملف موجودًا سلفًا يمكنك تعديله). لاحظ أن الملفات التي تبدأ بنقطة - مثل .user.ini
- غالبًا ما تكون مخفية في معظم أنظمة الملفات، وقد تحتاج لضبط برنامج إدارة الملفات لعرض الملفات المخفية.
لإنشاء الملف عبر الطرفية:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini
1
2
2
ثم افتح ملف .user.ini
في محرر نصوص وأضف إعدادات PHP التي تحتاجها، كل إعداد في سطر منفصل، مثل:
ini
; ضبط الحد الأقصى لحجم رفع الملفات إلى 20 ميجابايت
upload_max_filesize = 20M
; ضبط الحد الأقصى للذاكرة إلى 256 ميجابايت
memory_limit = 256M
; تفعيل عرض الأخطاء (يوصي به فقط أثناء التطوير)
display_errors = On
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
بعد ذلك احفظ وأغلق الملف.
الخطوة 3: انتظار سريان الإعدادات أو فرض التحديث
تغييرات ملف .user.ini
لا تطبق فورياً، حيث تقوم PHP بتخزينها مؤقتاً لأغراض الأداء. وبشكل افتراضي، يتحكم خيار user_ini.cache_ttl
في مدة هذا التخزين المؤقت (عادةً 300 ثانية أو 5 دقائق). بعد انتهاء فترة التخزين المؤقت، تعاد قراءة التعديلات تلقائيًا.
إذا أردت رؤية نتائج التعديلات مباشرة، يمكنك تجربة ما يلي (تبعاً لإصدار ServBay وإعداداته):
- إعادة تشغيل عملية PHP-FPM المعنية: عبر واجهة ServBay، يمكنك تحديد إصدار PHP قيد الاستخدام للموقع، ثم إيقاف وإعادة تشغيل خدمة PHP-FPM لذلك الإصدار.
- إعادة تشغيل ServBay: هذا الخيار الأكثر شمولاً، لكنه سيؤدي لإيقاف جميع الخدمات المحلية الأخرى بشكل مؤقت.
- انتظار انتهاء فترة الكاش: وهو الخيار الموصى به غالباً، خاصة إذا لم يكن الأمر عاجلاً.
الخطوة 4: التحقق من سريان إعدادات .user.ini
للتحقق من أن إعداداتك في .user.ini
أصبحت فعالة، أنشئ ملف PHP بسيط لعرض معلومات إعدادات PHP.
في نفس مجلد .user.ini
(مثلاً /Applications/ServBay/www/myproject/public
)، أنشئ ملفاً باسم info.php
يحتوي على:
php
<?php
phpinfo();
?>
1
2
3
2
3
احفظ ملف info.php
.
ثم، افتح مستعرض الويب لديك، وتوجه إلى العنوان المناسب على موقعك في ServBay حيث يوجد ملف info.php
. إذا كان مشروعك مهيأ عبر ServBay باسم نطاق myproject.servbay.demo
وملف info.php
بداخل مجلد public
، ستكون الرابط غالبًا بالشكل:https://myproject.servbay.demo/info.php
في صفحة phpinfo()
، ابحث عن الإعدادات التي أدخلتها في .user.ini
(مثلاً upload_max_filesize
, memory_limit
, display_errors
). ستلاحظ عمودين:
- Master Value: يعرض القيمة المحددة في ملف
php.ini
العام. - Local Value: يعرض القيمة الفعالة للسكربت الحالي، والتي قد تأتي من
.user.ini
أو إعدادات الخادم.
إذا ظهر في "Local Value" القيم التي أدخلتها في .user.ini
(مثل 20M
, 256M
, On
) فهذا يعني أن ملفك قيد التنفيذ بنجاح.
تنبيه هام: بعد التأكد، يجب حذف ملف info.php
أو تقييد الوصول إليه لأسباب أمنية، لأنه يكشف تفاصيل إعدادات السيرفر لديك.
ملاحظات وتنبيهات إضافية
- اسم ومكان الملف: يجب أن يكون اسم الملف بدقة
.user.ini
ويوضع في الدليل الذي ترغب بتطبيق الإعدادات عليه؛ وسيؤثر على هذا الدليل وجميع الأدلة الفرعية. - وضع التغيير للتعليمات: كما ذُكر مسبقاً، فقط التعليمات ذات وضع
PHP_INI_USER
أوPHP_INI_PERDIR
أوPHP_INI_ALL
يمكن تعديلها عبر.user.ini
. تعديل تعليمات ذات وضعPHP_INI_SYSTEM
لن يكون فعالاً ولن يظهر غالبًا أي خطأ. للاطلاع راجع دليل PHP. - التخزين المؤقت: انتبه لقيمة
user_ini.cache_ttl
. إذا كنت تعدل.user.ini
كثيرًا وتحتاج النتائج مباشرة، يمكنك مؤقتًا ضبط هذا الخيار في ملفphp.ini
العام إلى قيمة أقل (مثلuser_ini.cache_ttl = 5
) ثم إعادته لحالته الافتراضية في بيئة الإنتاج للحفاظ على الأداء. أي تعديل علىphp.ini
يتطلب إعادة تشغيل PHP-FPM. - أولوية الإعدادات: عادةً، تسلسل أولوية إعدادات PHP كالتالي: القيمة الافتراضية للنواة <
php.ini
(أو ملفات ini المضافة) < إعدادات الخادم (مثلphp_value
/php_flag
في Apache/nginx) <.user.ini
< دوال الإعداد داخل الكودini_set()
. إعدادات.user.ini
تتجاوز إعداداتphp.ini
، لكن يمكن تجاوزها من خلال الشيفرة البرمجية باستخدامini_set()
. - الأمان: لا تقم بتخزين معلومات سرية في
.user.ini
؛ رغم أن تأثيره محلي فقط، إلا أنه قد يقع ضمن مجلدات يمكن الوصول لها عبر الويب (مع أنه غالباً محمي من الوصول المباشر).
الأسئلة الشائعة (FAQ)
س: أنشأت ملف .user.ini
وأضفت إعداداتي، لكنها لم تعمل، ما السبب؟
ج: الأسباب الشائعة تشمل:
- خطأ في اسم أو موضع
.user.ini
: تأكد من صحة اسم الملف وموقعه الصحيح. - تعليمات غير مدعومة: ربما حاولت ضبط تعليمات لا يمكن ضبطها في
.user.ini
(وضعها ليسPHP_INI_USER
أوPHP_INI_PERDIR
). راجع دليل PHP. - كاش لم ينته بعد: انتظر مدة
user_ini.cache_ttl
(افتراضي 5 دقائق) أو أعد تشغيل PHP-FPM. - أخطاء في الصياغة: تحقق من ملف
.user.ini
بحثًا عن الأخطاء. - تجاوز عبر أولويات أعلى: تحقق إن كان السكربت يقوم بتعديل الإعدادات عبر دالة
ini_set()
.
س: ما الفرق بين ملف .user.ini
وملف php.ini العام؟
ج: يؤثر ملف php.ini
العام على كامل بيئة PHP (أو كل التطبيقات الناتجة عن إصدار PHP معين)، وتطبق إعداداته على جميع سكربتات PHP إلا إذا تم تجاوزها بإعدادات أولوية أعلى. أما .user.ini
ففعال فقط في الدليل الموجود فيه وما تحته، ويقبل فقط بعض التعليمات المعينة. الميزة الأساسية لـ .user.ini
هي التحكم المحلي من دون المساس بالإعدادات العامة.
الخلاصة
استخدام ملف .user.ini
في ServBay هو الأسلوب الأمثل لإدارة إعدادات PHP الخاصة بكل مشروع. يمنحك مرونة كبيرة ويمكنك من ضبط بيئة تطوير PHP بما يناسب احتياجات مشروعك دون التأثير على مشروعات أخرى أو الإعدادات العامة في ServBay. بناءً على هذا الدليل والأمثلة، ستتمكن من استخدام .user.ini
بكل احترافية في مشاريعك ضمن ServBay، ما سيعزز من كفاءة التطوير وسهولة إدارة البيئة المحلية لديك. تم تصميم ServBay لمنح المطورين أدوات قوية ومرنة للتطوير المحلي، ودعمها المتقدم لملف .user.ini
هو خير دليل على هذا النهج.