> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/ar/dlyl-alidarh/admin-guide/installation/configuration.md).

# الإعداد

يستخدم Chamilo 3.0 متغيرات البيئة وملفات إعداد Symfony لإعداداته الأساسية. تغطي هذه الصفحة ملفات الإعداد والمتغيرات الرئيسية.

## متغيرات البيئة (.env)

ملف الإعداد الأساسي هو `.env` في الدليل الجذر لـ Chamilo. يحتوي هذا الملف على إعدادات خاصة بالبيئة ينبغي عدم إيداعها في نظام التحكم بالإصدارات.

يُشحن ملف `.env.dist` افتراضي مع Chamilo ويحتوي على قيم افتراضية موثّقة. أنشئ `.env` (مطلوب لبدء التثبيت) لتجاوز القيم الخاصة ببيئتك.

### المتغيرات الرئيسية

| Variable                    | Description                                                                                                                                                                                                     | Example           |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| `APP_ENV`                   | بيئة التطبيق على مستوى Symfony. استخدم `prod` للإنتاج، و`dev` للتطوير، و'test' للاختبار.                                                                                                                        | `prod`            |
| `APP_SECRET`                | سلسلة عشوائية تُستخدم لرموز CSRF وتوقيع ملفات تعريف الارتباط وعمليات التشفير الأخرى. يولّد Chamilo قيمة فريدة لكل تثبيت. لا تعدّلها.                                                                            | `a1b2c3d4e5f6...` |
| `DATABASE_HOST`             | مضيف قاعدة البيانات. القيمة الافتراضية هي localhost                                                                                                                                                             | `localhost`       |
| `DATABASE_PORT`             | منفذ قاعدة البيانات. القيمة الافتراضية هي 3306 لـ MySQL/MariaDB                                                                                                                                                 | `3306`            |
| `DATABASE_NAME`             | اسم قاعدة البيانات، كما أدخلته في معالج التثبيت.                                                                                                                                                                | انظر أدناه.       |
| `DATABASE_USER`             | اسم مستخدم قاعدة البيانات، كما أدخلته في معالج التثبيت.                                                                                                                                                         | انظر أدناه.       |
| `DATABASE_PASSWORD`         | كلمة مرور مستخدم قاعدة البيانات، كما أدخلتها في معالج التثبيت.                                                                                                                                                  | انظر أدناه.       |
| `TRUSTED_PROXIES`           | (اختياري) إذا كنت تستضيف Chamilo خلف وكيل عكسي، يلزمك توفير عنوان/عناوين IP للوكيل العكسي هنا حتى يتمكن Chamilo من تفسير الطلبات وتوليد الاستجابات بشكل صحيح.                                                   |                   |
| `APP_ENABLE_API_ENTRYPOINT` | (اختياري) يعرض توثيق واجهة البرمجة التفاعلي (Swagger/OpenAPI) على `/api`. معطّل افتراضيًا. يتطلب مسح ذاكرة التخزين المؤقت ليأخذ مفعوله — انظر [تفعيل توثيق واجهة البرمجة](#enable-the-api-documentation) أدناه. | `true`            |

الإعدادات الأخرى في .env نادرًا ما تُعدَّل نسبيًا.

لاحظ أنه في الإصدارات المستقبلية ستُدمج إعدادات DATABASE\_\* في متغير واحد هو `DATABASE_URL`.

يُعرض إعداد إرسال البريد الإلكتروني أثناء التثبيت، ويمكن تعديله لاحقًا في قسم `Platform settings` بلوحة تحكم الإدارة.

## إعداد Symfony (دليل config/)

توجد إعدادات مستوى Symfony في دليل `config/`. تتحكم ملفات YAML هذه في سلوك الإطار وتعريفات الخدمات والإعدادات الخاصة بالحزم.

يُشحن دليل `config/` بالكامل مع كل حزمة من Chamilo وكل تحديث — بخلاف `.env` مثلًا، فهو لا يُستثنى ولا يُحفظ بشكل خاص أثناء الترقية. **أي تغيير يُجرى مباشرة على ملف ضمن `config/` أو `config/packages/` سيُستبدل بصمت في المرة التالية التي تحدّث فيها Chamilo.** انظر [التجاوزات الخاصة بالبيئة](#environment-specific-overrides) أدناه للطريقة المدعومة لتخصيص الإعداد دون فقدان تغييراتك.

ليس من الشائع الحاجة إلى تعديل تلك الملفات، وتغييرها قد يجعل بوابتك غير عاملة، لذا يُرجى عدم محاولة تعديلها إذا كان يجب ضمان توافر النظام.

### ملفات الإعداد الرئيسية

| File                             | Purpose                                                                      |
| -------------------------------- | ---------------------------------------------------------------------------- |
| `config/authentication.yaml`     | إعداد طرق المصادقة.                                                          |
| `config/packages/doctrine.yaml`  | إعداد قاعدة البيانات وORM.                                                   |
| `config/packages/security.yaml`  | المصادقة والجدران النارية والتحكم في الوصول وتسلسل الأدوار.                  |
| `config/packages/cache.yaml`     | إعداد محوّل ذاكرة التخزين المؤقت (نظام الملفات، APCu، Redis).                |
| `config/packages/framework.yaml` | إعدادات إطار Symfony العامة (الجلسة، CSRF، الموجّه، التخزين المؤقت لـ HTTP). |
| `config/packages/twig.yaml`      | إعداد محرك القوالب.                                                          |
| `config/services.yaml`           | تعريفات خدمات التطبيق وحقن التبعيات.                                         |

### التجاوزات الخاصة بالبيئة

يدعم Symfony الإعداد حسب البيئة. تتجاوز الملفات في `config/packages/prod/` القيم الافتراضية عندما يكون `APP_ENV=prod`، وتتجاوز `config/packages/dev/` عندما يكون `APP_ENV=dev`.

على سبيل المثال، يضبط `config/packages/prod/monolog.yaml` عادة تسجيلًا أقل إسهابًا من المكافئ في بيئة التطوير.

لا يعرّف Chamilo أي إعداد في `config/packages/prod/` داخل البرنامج نفسه، لذا إذا أردت تخصيص إعداد من `config/packages/*.yaml`، **لا تعدّل الملف الأساسي** — أنشئ ملفًا بنفس الاسم داخل `config/packages/prod/` (أو `dev/`/`test/`، بما يطابق البيئة التي تريد التأثير عليها) يحتوي فقط على المفاتيح التي تريد تجاوزها، وضع تغييراتك هناك بدلًا من ذلك.

هذا مهم لأن ملفات `config/packages/*.yaml` الأساسية جزء من حزمة Chamilo: كل تحديث يعيد شحنها ويستبدل ما هو موجود، لذا التعديلات المباشرة عليها لا تصمد أمام الترقية. وبما أن Chamilo لا يشحن أي شيء تحت `config/packages/prod/` (أو `dev/`/`test/`)، فإن ذلك الدليل آمن من الاستبدال عند التحديث وهو المكان المدعوم للاحتفاظ بالتخصيصات المحلية.

## أذونات الملفات

بذلنا جهودًا في الإصدار 2.0+ لضمان أن مجلدًا واحدًا فقط يحتاج إلى أذونات، ويظل هذا صحيحًا في الإصدار 3.0. هذا المجلد هو `var/`، ولتجنب المشكلات المعقدة يكفي ضبط المجلد بأكمله ليكون قابلاً للكتابة من قِبل مستخدم نظام خادم الويب.

اضبط الأذونات بشكل مناسب على الأنظمة المستندة إلى Debian:

```bash
# For systems where the web server runs as www-data
chown -R www-data:www-data var/
chmod -R 775 var/
```

## مهام الإعداد الشائعة

### التبديل إلى وضع الإنتاج

```bash
# In .env
APP_ENV=prod
APP_DEBUG=0
```

ثم امسح الذاكرة المؤقتة وقم بتسخينها:

```bash
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
```

### تفعيل توثيق واجهة برمجة التطبيقات (API)

```bash
# In .env
APP_ENABLE_API_ENTRYPOINT=true
```

ثم امسح الذاكرة المؤقتة حتى يسري التغيير:

```bash
php bin/console cache:clear
```

يصبح توثيق واجهة برمجة التطبيقات التفاعلي (Swagger/OpenAPI) متاحًا بعد ذلك على `/api`. تحرير ملف `.env` وحده لا يكفي: تُدمَج القيمة المحلولة في الذاكرة المؤقتة المجمَّعة لـ Symfony، لذلك يستمر `/api` في إرجاع حالته السابقة (مفعّل أو غير مفعّل) حتى تُمسح الذاكرة المؤقتة. إجراء **النظام > تنظيف الملفات المؤقتة** في لوحة الإدارة *لا* يقوم بذلك — انظر [أدوات النظام](/3.x/ar/dlyl-alidarh/admin-guide/system/system-tools.md#clean-temporary-files) لمعرفة السبب — لذا يتطلب هذا التغيير تحديدًا وصولًا إلى الصدفة لتشغيل `cache:clear`.

### إعداد الوكلاء الموثوق بهم

إذا كان Chamilo يعمل خلف وكيل عكسي أو موازن تحميل، فقم بإعداد الوكلاء الموثوق بهم حتى يعمل اكتشاف HTTPS وحل عنوان IP للعميل بشكل صحيح:

```yaml
# .env
TRUSTED_PROXIES='127.0.0.1,PROXY_IP'
```

### إعداد تخزين الجلسات

افتراضيًا، تُخزَّن الجلسات على نظام الملفات. في عمليات النشر متعددة الخوادم، قم بإعداد جلسات مدعومة بـ Redis أو بقاعدة البيانات:

```yaml
# config/packages/framework.yaml
framework:
    session:
        handler_id: 'redis://localhost:6379'
```

## نصائح

* **لا تحرّر `.env.dist` مباشرة أبدًا** -- استخدم دائمًا `.env` لتجاوزاتك. قد يُستبدل ملف `.env.dist` أثناء الترقيات.
* **أبقِ `APP_DEBUG=0` في الإنتاج** -- وضع التصحيح يكشف معلومات حساسة في صفحات الأخطاء.
* **انسخ احتياطيًا ملف `.env`** بشكل منفصل عن قاعدة الشيفرة لأنه يحتوي على بيانات اعتماد وهو مستثنى من التحكم بالإصدارات.
