دليل إعداد PHP في ServBay: ضبط php.ini وPHP-FPM ووحدات الامتداد
يوفر ServBay لمطوري الويب بيئة تطوير PHP محلية قوية ومرنة. لتلبية احتياجات المشاريع المختلفة، قد تحتاج إلى تعديل إعدادات PHP المتنوعة مثل حد الذاكرة وحجم رفع الملفات ومستوى تقارير الأخطاء أو تفعيل وحدات امتداد معينة.
توضح هذه المقالة بالتفصيل كيفية تعديل إعدادات PHP في ServBay. يوصى وبشدة باستخدام واجهة المستخدم الرسومية (UI) البديهية التي يوفرها ServBay لإدارة هذه الإعدادات. من المفيد أيضًا معرفة مواقع وتركيبة الملفات الأساسية (مثل php.ini
وphp-fpm.conf
) ولكن ننصح بشدة بإجراء التعديلات عبر واجهة ServBay لضمان استمرارية وملاءمة الإعدادات.
تنبيه هام
يرجى عدم تعديل ملفات إعدادات PHP التي يولدها ServBay يدويًا (الموجودة في /Applications/ServBay/etc/php/<version>/
ومجلداتها الفرعية). يتم إدارة هذه الملفات من خلال ServBay، وأي تعديلات تقوم بها يدويًا ستتم الكتابة فوقها أثناء تحديث أو إعادة تشغيل ServBay أو عند إجراء عمليات أخرى متعلقة. يجب تنفيذ جميع التعديلات من خلال واجهة المستخدم لServBay فقط.
نظرة عامة
يتم تخزين ملفات إعدادات PHP لكل إصدار في مجلد منفصل في ServBay. على سبيل المثال، يوجد الملف الرئيسي لإعدادات PHP 8.3 ضمن المسار /Applications/ServBay/etc/php/8.3
.
تشمل الملفات الأساسية:
php.ini
: ملف الإعداد الرئيسي لـ PHP، يؤثر على الإعدادات العامة في CLI وبيئة الويب.php-fpm.conf
: ملف إعداد PHP-FPM (مدير عمليات FastCGI)، ويؤثر بشكل أساسي على طريقة وأداء تشغيل PHP ضمن خوادم الويب مثل Caddy أو Nginx.conf.d/
: يحتوي هذا المجلد على ملفات إعداد تحميل وحدات الامتداد المتنوعة في PHP (ملفات.ini
مثلxdebug.ini
,opcache.ini
إلخ).
رغم توفر هذه الملفات، إلا أن ServBay يقدم وسيلة أكثر أماناً وسهولة لتعديل إعداداتها.
الإعداد عبر واجهة ServBay الرسومية (الطريقة الموصى بها)
يوفر ServBay واجهة رسومية سهلة تسمح لك بتعديل كافة إعدادات PHP مباشرة. بعد حفظ التعديلات من خلال الواجهة، سيقوم ServBay تلقائيًا بتطبيق التغييرات وغالبًا أيضاً بإعادة تشغيل خدمة PHP عند اللزوم—دون الحاجة لتعديل أي ملفات أو تنفيذ أوامر عبر الطرفية.
خطوات الوصول لواجهة إعدادات PHP:
- افتح نافذة ServBay الرئيسية.
- من شريط التنقل الجانبي، اختر اللغات.
- من قائمة لغات التطوير، حدد نسخة الـ PHP التي ترغب في ضبط إعداداتها (على سبيل المثال، انقر على
PHP 8.3
). - سيظهر في الجانب الأيمن تفاصيل وإعدادات النسخة المختارة من PHP.
تظهر واجهة إعدادات PHP النموذجية كالتالي:
عادة ما تنقسم الواجهة إلى ثلاثة أقسام رئيسية، كل منها مخصص لإعدادات PHP-FPM وPHP (php.ini
) ووحدات الامتداد. سنتناولها بالتفصيل أدناه.
إعدادات PHP FPM
نصيحة
تؤثر إعدادات php-fpm.conf
بشكل أساسي على سلوك PHP في بيئة خادم الويب. الإعدادات التي تجريها هنا عبر واجهة ServBay تتجاوز (تغطي على) الإعدادات المقابلة في php.ini
، لكنها تُطبق فقط على طلبات الويب. هذه التعديلات لا تؤثر على تشغيل PHP عبر الطرفية (CLI).
تتفاعل خدمة الويب في ServBay (Caddy أو Nginx) مع PHP عن طريق PHP-FPM. تتيح لك واجهة إعداد PHP FPM ضبط معايير تؤثر على أداء واستقرار بيئة الويب، مثل:
- إدارة العمليات (
pm
): تحدد طريقة إنشاء وإدارة عمليات العمل الخاصة بـ PHP-FPM (مثلdynamic
,static
). - عدد العمليات (
pm.max_children
,pm.start_servers
, وغيرها): تعيين الحد الأقصى لعدد العمليات، وعدد العمليات الابتدائية عند التشغيل، مما يؤثر على قدرة المعالجة المتزامنة. - حد الذاكرة (
memory_limit
): الإعداد هنا سيغطي ما تم تحديده فيphp.ini
لنفس الخاصية، لكن فقط لطلبات الويب. - سجلات الأخطاء والعرض: تحديد مسار سجل الأخطاء، ومستوى الأخطاء، وما إذا كانت ستظهر في المتصفح.
على سبيل المثال، إذا رغبت في رفع حد ذاكرة PHP في بيئة الويب من القيمة الافتراضية (مثل 64M أو 128M) إلى 1G، يكفي أن تجد خيار memory_limit
في قسم إعدادات PHP FPM على واجهة ServBay، وتحدد 1G
من القائمة المنسدلة ثم تحفظ التغييرات. هذا التغيير سيؤثر فقط على سكريبتات PHP التي تُنفذ عبر خادم الويب، بينما السكريبتات التي تُشغل عبر الطرفية ستظل متأثرة بقيمة memory_limit
من php.ini
.
مثال توضيحي: إذا تم تعيين memory_limit
في php.ini
إلى 512M
، وفي إعدادات PHP FPM إلى 128M
:
- عند تشغيل سكريبت PHP عبر الطرفية (CLI)، الحد الأقصى للذاكرة سيكون
512M
. - عند الوصول إلى سكريبت PHP عبر الويب، الحد الأقصى سيكون
128M
.
إعداد php.ini
نصيحة
الإعدادات في php.ini
شاملة وتؤثر على سلوك PHP في الطرفية (CLI) وعلى الويب. ومع ذلك، تنطبق إعدادات PHP FPM ذات الاسم نفسه كأولوية أعلى على بيئة الويب.
ترتبط منطقة إعدادات PHP هنا بخيارات إعداد الملف الأساسي php.ini
. ويتضمن هذا العديد من الإعدادات العامة لتشغيل PHP، مثل:
post_max_size
: يحدد الحد الأقصى لحجم البيانات المرسلة عبر طريقة POST.upload_max_filesize
: يحدد الحد الأقصى لحجم الملف المسموح برفعه.date.timezone
: تعيين المنطقة الزمنية الافتراضية المستخدمة بواسطة PHP.display_errors
/error_reporting
: التحكم في ما إذا كانت الأخطاء تظهر على الصفحة ومستوى تقرير الأخطاء.max_execution_time
: تحديد الزمن الأقصى المسموح به لتنفيذ السكريبت (بالثواني).disable_functions
/disable_classes
: تعطيل دوال أو أصناف معينة في PHP لتحسين الأمان.open_basedir
: لتقييد المسارات التي يستطيع PHP الوصول إليها في نظام الملفات. يُنصح بتخزين جميع مشاريع الويب في المجلد الافتراضي لـ ServBay/Applications/ServBay/www
، حتى تتمكن من تحديد هذا المسار بسهولة عند ضبطopen_basedir
دون الحاجة لتعديد عدة مسارات.
يمكنك تعديل هذه الإعدادات الشائعة في php.ini
مباشرة من واجهة ServBay.
لمزيد من التوضيح حول كافة خيارات الضبط في php.ini
، راجع الدليل الرسمي لـ PHP: PHP Runtime Configuration.
إعدادات وحدات الامتداد في PHP
يأتي ServBay مزودًا بعدد كبير من وحدات امتداد PHP الشائعة، وتشمل الاتصال بقواعد البيانات، التخزين المؤقت، التصحيح، دعم الأطر البرمجية وغير ذلك. توفر واجهة ServBay طريقة سهلة لتفعيل أو إيقاف هذه الوحدات وضبط إعداداتها الخاصة.
من بين أشهر وحدات الامتداد التي يدعمها ServBay: xDebug
, OPcache
, ImageMagick
, Redis
, MongoDB
, Phalcon
, Swoole
، والعديد من الوحدات الأخرى التي تدعم قواعد بيانات متنوعة (مثل MySQL, PostgreSQL, MongoDB)، أنظمة الرسائل، التخزين المؤقت وغيرها.
تفعيل أو إيقاف وحدات الامتداد في PHP يتم بسهولة:
- في واجهة إعدادات PHP في ServBay، انتقل إلى علامة تبويب "وحدات الامتداد" أو ما يشابهها.
- ابحث عن الوحدة التي تحتاجها (مثل
xdebug
). - فعّل أو أوقف الوحدة عبر المفتاح المقابل.
- إذا كانت هناك إعدادات إضافية للوحدة (مثلاً إعدادات
xDebug
مثلxdebug.mode
،xdebug.client_port
)، يمكنك تعديلها مباشرة من الواجهة. - احفظ التغييرات لتطبيقها.
لقائمة كاملة وأحدث تفاصيل لوحدات الامتداد المدعومة في ServBay، راجع قائمة وحدات الامتداد في PHP (يرجى مراجعة أحدث نسخة من الوثائق).
فهم هيكلية ملفات إعداد PHP (لا ينصح بتعديلها يدويًا)
رغم أنه من الأفضل دوماً استخدام واجهة ServBay في تعديل الإعدادات، إلا أن معرفة مواقع وتركيبة ملفات الإعداد يُساعد في فهم آلية عمل PHP بشكل أعمق.
يمكنك العثور على ملفات إعداد PHP التي ينشئها ServBay في المسار /Applications/ServBay/etc/php/<version>/
.
php.ini
: ملف الإعداد الرئيسي.php-fpm.conf
: ملف إعداد إدارة عمليات PHP-FPM.conf.d/
: مجلد يحتوي على ملفات.ini
الخاصة بكل وحدة امتداد.
مثال على تركيبة ملف php.ini
ملف php.ini
يستخدم صيغة INI. وفيما يلي أمثلة لبعض الإعدادات الشائعة داخل الملف:
; تعديل حد الذاكرة
memory_limit = 256M
; تعديل حدود حجم ملفات الرفع
upload_max_filesize = 50M
post_max_size = 50M
; ضبط المنطقة الزمنية
date.timezone = "Asia/Shanghai" ; أو "UTC", "America/New_York" حسب الحاجة
; تفعيل عرض الأخطاء (فقط لبيئة التطوير!)
display_errors = On
error_reporting = E_ALL
; تعديل الحد الأقصى لزمن التنفيذ
max_execution_time = 300
; تقييد مسارات وصول نظام الملفات (مثال)
; open_basedir = /Applications/ServBay/www/:/tmp/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
مثال على تركيبة ملف php-fpm.conf
يحتوي ملف إعداد php-fpm.conf
على إعدادات عامة وإعدادات لمجموعة العمليات (pool)، وغالبًا ما يقوم ServBay بتكوين مجموعة افتراضية باسم www
.
[global]
; مسار سجل الأخطاء العام
error_log = /Applications/ServBay/logs/php/8.3/errors.log
[www]
; عنوان ومنفذ الاصغاء أو ملف المقبس
listen = /Applications/ServBay/tmp/php-cgi-8.3.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
; المستخدم والمجموعة (غالبًا يعمل ServBay باسم المستخدم الحالي)
; user = servbay-demo
; group = staff
; طريقة إدارة العمليات (static, dynamic, ondemand)
pm = dynamic
pm.max_children = 10 ; الحد الأقصى لعدد العمليات الفرعية
pm.start_servers = 2 ; عدد العمليات عند بدء التشغيل
pm.min_spare_servers = 1 ; أدنى عدد عمليات احتياطية
pm.max_spare_servers = 6 ; أعلى عدد عمليات احتياطية
pm.max_requests = 1024 ; الحد الأقصى للطلبات لكل عملية، ثم يعاد تشغيلها لتفادي تسريبات الذاكرة
; تفعيل سجل العمليات البطيئة (requests تجاوزت request_slowlog_timeout)
request_slowlog_timeout = 5s
slowlog = /Applications/ServBay/logs/php/8.3/slow.log
; إعدادات php، تتجاوز ما هو في php.ini (مثال)
; php_admin_value[memory_limit] = 128M
; php_admin_flag[display_errors] = on
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
مثال على إعدادات تحميل وحدة PHP (conf.d/)
يُستخدم مجلد conf.d/
للاحتفاظ بملفات .ini
الخاصة بكل وحدة. على سبيل المثال، قد يحتوي ملف xdebug.ini
على ما يلي:
[Xdebug]
; تحميل امتداد Xdebug
zend_extension = xdebug.so
; أوضاع Xdebug (debug، develop، profile، trace، coverage)
xdebug.mode=debug,develop
; طريقة بدء التصحيح (yes, trigger, develop)
; yes: دائماً يبدأ التصحيح
; trigger: وفق مشغل معين مثل GET/POST أو ملف تعريف الارتباط
; develop: فقط ميزات مساعدة التطوير (مثل تتبع المكدس)
xdebug.start_with_request=yes
; بيانات الاتصال بـ IDE (للتصحيح)
xdebug.client_host=localhost
xdebug.client_port=39083
; مسار سجل Xdebug
xdebug.log=/Applications/ServBay/logs/xdebug/8.3/xdebug.log
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
مرة أخرى: رغم إمكانية العثور على الملفات في هذه المواقع، يرجى عدم تحريرها يدويًا. استخدم دائمًا واجهة ServBay.
تطبيق التغييرات: إعادة تشغيل خدمة PHP
عند تعديل الإعدادات عبر واجهة ServBay، عادة ما يقوم ServBay بالكشف التلقائي عن التغييرات وتطبيقها. في بعض الحالات، قد تحتاج إلى إعادة تشغيل خدمة PHP لضمان تفعيل كل الإعدادات الجديدة.
يمكنك إعادة التشغيل عبر الطرق التالية:
إعادة التشغيل من خلال واجهة ServBay
- افتح نافذة ServBay الرئيسية.
- من شريط التنقل الجانبي، اختر الحزم.
- اعثر على إصدار الـ PHP الذي عدلت إعداداته.
- انقر على زر إعادة التشغيل بجوار هذا الإصدار (عادة أيقونة سهم دائري).
إعادة التشغيل عبر أداة الطرفية servbayctl
لمن يفضل سطر الأوامر، يمكنك استخدام أداة servbayctl
التي يوفرها ServBay لإدارة الخدمات، بما في ذلك إعادة تشغيل إصدار معين من PHP.
افتح تطبيق الطرفية واكتب الأمر التالي (استبدل 8.3
بالإصدار المراد إعادة تشغيله):
servbayctl restart php 8.3
بعد تنفيذ الأمر، سيقوم ServBay بإعادة تشغيل عمليات PHP-FPM للإصدار المحدد لتفعيل الإعدادات الجديدة.
الأسئلة الشائعة (FAQ)
س: عدلت ملف
php.ini
يدويًا، لماذا لم تفعل التغييرات أو تم الرجوع عنها؟- ج: يدير ServBay ملفات إعداد الحزم بشكل آلي. أي تعديلات يدوية قد تُستبدل عند تحديث إعدادات ServBay أو إعادة تشغيل الخدمات أو إجراء عمليات داخلية أخرى. يُرجى دومًا استخدام واجهة المستخدم لServBay لتعديل الإعدادات، فهي الطريقة الموصى بها والآمنة.
س: كيف أرفع حد الذاكرة أو حجم رفع الملفات في PHP؟
- ج: افتح واجهة ServBay، انتقل إلى اللغات -> اختر إصدار PHP الخاص بك. عدل قيمة
memory_limit
في إعدادات PHP FPM (تؤثر على الويب)، وغيّرupload_max_filesize
وpost_max_size
في إعدادات php.ini (تؤثر على الطرفية والويب، لكن الأخيرة قد تغطيها إعدادات FPM). احفظ التعديلات وأعد تشغيل خدمة PHP.
- ج: افتح واجهة ServBay، انتقل إلى اللغات -> اختر إصدار PHP الخاص بك. عدل قيمة
س: كيف أفعّل أو أضبط Xdebug؟
- ج: من خلال واجهة ServBay: انتقل إلى اللغات -> اختر إصدار PHP المطلوب. في إعدادات وحدات الامتداد، فعّل
xdebug
وعدل الخيارات مثلxdebug.mode
،xdebug.client_host
،xdebug.client_port
بحسب احتياج الـ IDE وأغراض التصحيح. احفظ وأعد تشغيل خدمة PHP.
- ج: من خلال واجهة ServBay: انتقل إلى اللغات -> اختر إصدار PHP المطلوب. في إعدادات وحدات الامتداد، فعّل
س: ما الفرق بين إعدادات
php.ini
و PHP-FPM؟ أيهما يجب تعديله؟- ج:
php.ini
هو ملف الإعداد الأساسي ويؤثر على تشغيل PHP عبر الطرفية والويب. إعدادات PHP-FPM (php-fpm.conf
) خاصة بتشغيل PHP ضمن خادم الويب، وتغطي إعداداتها الخاصة أي إعداد مقابِل فيphp.ini
. عمومًا، إذا رغبت بتعديل إعداد يخص بيئة الويب (كالذاكرة أو وقت التنفيذ أو عرض الأخطاء)، تحقق أولًا من إعدادات PHP-FPM. إذا كان التعديل مطلوب لبيئة الطرفية أو يشمل كل البيئات (كالمنطقة الزمنية أو تعطيل الدوال)، استخدم إعداداتphp.ini
. تجمع واجهة ServBay كل هذه الإعدادات بشكل واضح.
- ج:
الخلاصة
يوفر ServBay واجهة رسومية آمنة وسهلة لإدارة إعدادات PHP بمختلف جوانبها: php.ini
، PHP-FPM ووحدات الامتداد. عبر تعديل الإعدادات وحفظها من خلال الواجهة، مع إعادة تشغيل خدمة PHP، ستضمن حصولك على بيئة تطوير مرنة ومناسبة لمشاريعك. رغم أن معرفة مواقع الملفات طريقة لفهم البنية التقنية أفضل، إلا أنّ إجراء التعديلات ينبغي أن يتم دوماً من خلال واجهة ServBay لتجنب ضياع التعديلات. استثمر في قدرات ServBay الغنية وخصص بيئة PHP المثلى لكل مشروع بكل سهولة.