إنشاء وتشغيل مشروع Yii 2 في ServBay
نظرة عامة: ما هو Yii 2؟
Yii 2 هو إطار عمل PHP عالي الأداء يعتمد على المكونات ويتيح تطوير تطبيقات ويب حديثة بسرعة وكفاءة. يعتمد نمط التصميم MVC (النموذج - العرض - المتحكم)، ويوفر مجموعة غنية من الأدوات والميزات لمساعدة المطورين على بناء تطبيقات ويب قابلة للتوسّع وعالية الجودة. اكتسب Yii 2 شعبية واسعة بفضل أدائه المتفوق وبنيته المرنة وميزاته المدمجة القوية مثل الكاش، الأمان، ودعم تطوير واجهات RESTful وغيرها.
المميزات الرئيسية والمزايا لـ Yii 2
- أداء عالي: تم تحسين Yii 2 بعناية ليعالج الطلبات المتزامنة بكفاءة، مما يجعله مناسبًا للتطبيقات الحساسة للأداء.
- التقسيم إلى وحدات: صُمم الإطار ليكون شديد المرونة والمكونات، مما يمنح المطورين تنظيمًا أفضل للكود ويتيح إعادة استخدام المكونات.
- الأمان: يضم خيارات أمان عديدة مثل التحقق من المدخلات، ترشيح المخرجات، الحماية من CSRF/XSS، وإطار عمل للمصادقة والتفويض.
- سهولة الاستخدام: يوفر API بسيط وبديهي ووثائق شاملة، يسهّل على المطورين بدء العمل بسرعة.
- دعم مجتمعي واسع: يتوفر مجتمع نشط للمطورين وأرشيف واسع من الإضافات الخارجية للتحسين والمساعدة.
- أدوات مدمجة: أدوات سطر الأوامر لتسهيل مهام مثل ترحيل قواعد البيانات وتوليد الكود، مما يعزز إنتاجية التطوير.
Yii 2 هو خيار مثالي لتطوير تطبيقات مؤسسية، واجهات API، البوابات الإلكترونية، وأنواع عديدة من المشاريع على الويب.
تشغيل مشروع Yii 2 باستخدام ServBay
ServBay هو بيئة تطوير ويب محلية مخصصة لـ macOS و Windows. يتكامل مع PHP، وقواعد بيانات متنوعة (مثل MySQL، PostgreSQL، MongoDB، Redis)، وخوادم ويب (Caddy، Nginx)، وأدوات مطورين أخرى (مثل Composer، Node.js، Python، Go، Java ... إلخ). هدفه هو تقديم منصة تطوير جاهزة للعمل "من اللحظة الأولى" لمطوري الويب.
ستوضح هذه المقالة كيفية استخدام بيئة PHP في ServBay، وأداة Composer، وخدمات قواعد البيانات لإنشاء وتشغيل مشروع Yii 2 أساسي. سنستخدم ميزة "المواقع" في ServBay لضبط خادم الويب المحلي، مع تقديم خطوات بسيطة للوصول إلى المشروع وتجربة ميزاته الأساسية.
المتطلبات الأساسية
قبل البدء، تأكد من أنك:
- قمت بتثبيت وتشغيل ServBay بنجاح على macOS أو Windows.
- قمت بتفعيل إصدار PHP المطلوب في ServBay (مثلاً: PHP 8.3 أو أحدث).
- قمت بتثبيت وتفعيل خدمة قواعد البيانات التي ترغب باستخدامها (MySQL أو PostgreSQL) بالإضافة إلى خدمات الكاش (Memcached و Redis) داخل ServBay.
يمكنك إدارة جميع الحزم وحالات تشغيلها من الواجهة الرئيسية لـ ServBay.
إنشاء مشروع Yii 2
TIP
ينصح ServBay بحفظ ملفات مشروعك في الدلائل التالية. يساعد ذلك على تنظيم ملفاتك، ويسهّل إدارة المواقع داخل ServBay:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Composer: ServBay يحتوي بالفعل على أداة Composer المدمجة، لذلك لست بحاجة لتثبيتها منفردة. استخدم أمر
composer
مباشرة من الطرفية.إنشاء دليل المشروع: افتح الطرفية، تحرك إلى دليل موقع ServBay الجذري، وأنشئ دليل مشروع جديد.
macOS:
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app
1
2
3Windows:
cmdcd C:\ServBay\www mkdir servbay-yii2-app cd servbay-yii2-app
1
2
3استخدام Composer لإنشاء مشروع Yii 2: داخل دليل
servbay-yii2-app
، نفذ الأمر التالي لإنشاء تطبيق الأساس لـ Yii 2:bashcomposer create-project --prefer-dist yiisoft/yii2-app-basic .
1سيقوم هذا الأمر بتنزيل قالب تطبيق Yii 2 الأساسي وجميع تبعياته داخل الدليل الحالي (
.
). انتظر حتى ينتهي Composer من التحميل والتثبيت.دخول دليل المشروع: تأكد أن الطرفية حالياً في جذر المشروع، فكل الأوامر التالية ستُنفذ من هنا.
macOS:
bashcd /Applications/ServBay/www/servbay-yii2-app
1Windows:
cmdcd C:\ServBay\www\servbay-yii2-app
1
التكوين الأولي
بعد إنشاء مشروع Yii 2، تحتاج إلى ضبط بعض الإعدادات الأساسية، خصوصاً فيما يتعلق باتصال قاعدة البيانات وضبط المكونات.
ضبط الاتصال بقاعدة البيانات: قم بتحرير ملف
config/db.php
في جذر المشروع. حسب قاعدة البيانات التي اخترتها في ServBay (MySQL أو PostgreSQL) وتكوينها (عادةً اسم المستخدم هوroot
وكلمة المرورpassword
ما لم تغيرها)، حدث معلومات الاتصال.أولاً، أنشئ قاعدة بيانات جديدة لهذا المشروع، مثلًا باسم
servbay_yii2_app
، عن طريق أدوات إدارة قواعد البيانات في ServBay مثل Adminer أو عميل خارجي (Sequel Ace، TablePlus ... إلخ). يمكنك الوصول إلى Adminer من قسم قواعد البيانات في واجهة تطبيق ServBay.بالنسبة لـ MySQL:
php<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', // dbname هي اسم قاعدة البيانات التي أنشأتها 'username' => 'root', // اسم مستخدم قاعدة البيانات 'password' => 'password', // كلمة مرور قاعدة البيانات 'charset' => 'utf8mb4', // يُنصح بها لدعم مجموعة أحرف أوسع ];
1
2
3
4
5
6
7
8
9بالنسبة لـ PostgreSQL:
php<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'pgsql:host=127.0.0.1;port=5432;dbname=servbay_yii2_app', // dbname هو اسم قاعدة البيانات، عادةً البورت 5432 'username' => 'root', // اسم مستخدم قاعدة البيانات 'password' => 'password', // كلمة مرور قاعدة البيانات 'charset' => 'utf8', 'schemaMap' => [ 'pgsql' => [ 'class' => 'yii\pgsql\Schema', 'defaultSchema' => 'public', // الـ schema الافتراضي في PostgreSQL ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15احرص على تعديل ملف
config/db.php
بحسب وضعك الفعلي.ضبط الكاش ومكون Redis: عدّل ملف
config/web.php
في جذر المشروع. أضف أو عدل قسمcomponents
لضبط Memcached و Redis. المنفذ الافتراضي لـ Memcached في ServBay هو11211
، ولـ Redis هو6379
.php<?php // ... إعدادات أخرى 'components' => [ // ... مكونات موجودة أخرى (مثل request, cache, user, errorHandler, log, urlManager) 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, // المنفذ الافتراضي لـ Memcached 'weight' => 100, ], ], ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, // المنفذ الافتراضي لـ Redis 'database' => 0, // رقم قاعدة بيانات Redis ], // ... مكونات أخرى ], // ... إعدادات أخرى
1
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تأكد من تشغيل خدمات Memcached و Redis داخل ServBay. للتنويه: استخدام Redis للكاش يتطلب تثبيت
yiisoft/yii2-redis
(يتم تثبيته غالباً مع القالب الأساس، وإذا احتجته أكثر يمكنك استخدام الأمرcomposer require yiisoft/yii2-redis
). أما Memcached عادةً يستخدم حزمةyiisoft/yii2-memcached
.
ضبط خادم الويب (مواقع ServBay)
استخدم ميزة "المواقع" في ServBay لضبط خادم الويب المحلي (Caddy أو Nginx) لربط مشروع Yii 2.
- افتح تطبيق ServBay: شغّل البرنامج.
- اذهب إلى إعدادات المواقع: في واجهة ServBay، ابحث وانقر على قسم "المواقع" أو ما يشابهه.
- أضف موقع جديد: اضغط إضافة (+ أو "إضافة" حسب الواجهة).
- أدخل بيانات الموقع:
- الاسم: ادخل اسماً مميزاً مثل
موقعي الأول لتطوير Yii 2
. - اسم النطاق: ادخل اسم نطاق محلي للوصول من المتصفح، مثل
servbay-yii2-test.local
(يقوم ServBay تلقائياً بتهيئة DNS المحلي للنطاق وربطه بـ127.0.0.1
). - نوع الموقع: اختر
PHP
. - إصدار PHP: اختر الإصدار المطلوب (مثل
8.3
). يجب أن يكون مثبتاً ومفعلاً في ServBay. - دليل الجذر للموقع: خطوة هامة جداً. نقطة الدخول العامة لتطبيق Yii 2 هي دليل
web
داخل المشروع. لذا يجب ضبط دليل الموقع الجذري إلى:- macOS:
/Applications/ServBay/www/servbay-yii2-app/web
- Windows:
C:\ServBay\www\servbay-yii2-app\web
- macOS:
- الاسم: ادخل اسماً مميزاً مثل
- حفظ وتطبيق: احفظ الإعدادات. سيعيد ServBay تحميل إعدادات خادم الويب تلقائياً.
لمزيد من التفاصيل، راجع الوثائق الرسمية لـ ServBay: إضافة أول موقع.
يقوم ServBay تلقائياً بإصدار وتوثيق شهادة SSL للنطاق المحلي الخاص بك، عبر ServBay User CA أو ServBay Public CA، لذا يمكنك دخول موقعك عبر HTTPS دون مشاكل.
إضافة كود تجريبي لعرض الوظائف
لتوضيح عمل قواعد البيانات والكاش، أضفنا عمليات تجريبية في متحكم Yii 2 الافتراضي.
عدّل ملف controllers/SiteController.php
في جذر المشروع، وأضف داخل كلاس SiteController
الدوال التالية:
php
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
use yii\db\Exception as DbException; // استيراد كلاس استثناءات قاعدة البيانات
class SiteController extends Controller
{
/**
* صفحة الرئيسية.
*
* @return string
*/
public function actionIndex()
{
return $this->render('index');
}
/**
* تجربة استخدام Memcached.
*
* @return Response
*/
public function actionMemcached()
{
$cache = Yii::$app->cache;
$key = 'my_memcached_test_key';
$data = 'Hello Memcached from ServBay!';
$duration = 60; // تخزين الكاش لمدة 60 ثانية
if ($cache->set($key, $data, $duration)) {
$value = $cache->get($key);
return $this->asText("تم ضبط Memcached بنجاح. القيمة المسترجعة: " . $value);
} else {
return $this->asText("فشل في ضبط البيانات في Memcached. تأكد من تشغيل الخدمة والإعدادات.");
}
}
/**
* تجربة استخدام Redis.
*
* @return Response
*/
public function actionRedis()
{
$redis = Yii::$app->redis;
$key = 'my_redis_test_key';
$data = 'Hello Redis from ServBay!';
try {
if ($redis->set($key, $data)) {
$value = $redis->get($key);
return $this->asText("تم ضبط Redis بنجاح. القيمة المسترجعة: " . $value);
} else {
return $this->asText("فشل في ضبط البيانات في Redis. تأكد من تشغيل الخدمة والإعدادات.");
}
} catch (\yii\base\Exception $e) {
return $this->asText("خطأ في Redis: " . $e->getMessage() . ". تأكد من تشغيل الخدمة والإعدادات.");
}
}
/**
* إضافة مستخدم لقاعدة البيانات.
* يجب أن يكون هناك جدول 'users'.
*
* @return Response
*/
public function actionMysqlAdd() // يمكن استخدامه أيضاً مع PostgreSQL بتعديل الإعداد
{
try {
$count = Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay Demo User', // اسم مستخدم توضيحي تابع للعلامة
'email' => 'demo-user@servbay.test', // بريد توضيحي تابع للعلامة
])->execute();
return $this->asText("تم إضافة المستخدم بنجاح. الصفوف المتأثرة: " . $count);
} catch (DbException $e) {
return $this->asText("فشل في إضافة المستخدم إلى قاعدة البيانات. الخطأ: " . $e->getMessage() . ". تأكد من تشغيل الخدمة والإعدادات، وأن جدول 'users' موجود.");
}
}
/**
* جلب مستخدمين من قاعدة البيانات.
* يجب أن يكون هناك جدول 'users'.
*
* @return Response
*/
public function actionMysql() // يمكن استخدامه أيضاً مع PostgreSQL بتعديل الإعداد
{
try {
$users = Yii::$app->db->createCommand('SELECT id, name, email FROM users')->queryAll();
// تنسيق الإخراج لتجنب عرض معلومات حساسة أو ترتيب غير واضح
$output = "المستخدمون المسترجعون:\n";
foreach ($users as $user) {
$output .= "- رقم: {$user['id']}, الاسم: {$user['name']}, البريد الإلكتروني: {$user['email']}\n";
}
return $this->asText($output);
} catch (DbException $e) {
return $this->asText("فشل في جلب المستخدمين من قاعدة البيانات. الخطأ: " . $e->getMessage() . ". تأكد من تشغيل الخدمة والإعدادات، وأن جدول 'users' موجود.");
}
}
// إذا كنت تستخدم PostgreSQL يمكنك إضافة دوال منفصلة، لكن غالباً db واحدة تكفي
// public function actionPgsqlAdd() { ... }
// public function actionPgsql() { ... }
/**
* تنسيق الإخراج كنص عادي.
* @param string $text
* @return Response
*/
protected function asText($text)
{
Yii::$app->response->format = Response::FORMAT_RAW;
Yii::$app->response->getHeaders()->add('Content-Type', 'text/plain');
return $text;
}
/**
* تنسيق الإخراج كـ JSON.
* @param mixed $data
* @return Response
*/
protected function asJson($data)
{
Yii::$app->response->format = Response::FORMAT_JSON;
return $data;
}
}
1
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
لاحظ أنني أضفت معالجة للأخطاء وتنسيق أوضح للإخراج، وعدلت اسم المستخدم والبريد في الأمثلة ليناسب توضيح ServBay.
انتقل إلى ملف الواجهة views/site/index.php
في جذر المشروع (المقابل لدالة actionIndex
). يمكنك إبقاء المحتوى الافتراضي أو تعديله كما يلي:
php
<?php
/* @var $this yii\web\View */
/* @var $name string */
/* @var $message string */
/* @var $exception Exception */
use yii\helpers\Html;
$this->title = 'تطبيقي باستخدام Yii2 على ServBay'; // تحديث العنوان
?>
<div class="site-index">
<div class="jumbotron">
<h1>مبروك!</h1>
<p class="lead">لقد أنشأت تطبيق Yii2 الخاص بك بنجاح وقمت بضبطه باستخدام ServBay!</p>
<p><a class="btn btn-lg btn-success" href="https://www.yiiframework.com">ابدأ مع Yii</a></p>
</div>
<div class="body-content">
<h2>التجارب</h2>
<ul>
<li><a href="<?= Html::toRoute('site/memcached') ?>">اختبار Memcached</a></li>
<li><a href="<?= Html::toRoute('site/redis') ?>">اختبار Redis</a></li>
<li><a href="<?= Html::toRoute('site/mysql-add') ?>">إضافة مستخدم لقاعدة البيانات</a> (يتطلب وجود جدول 'users')</li>
<li><a href="<?= Html::toRoute('site/mysql') ?>">جلب المستخدمين من قاعدة البيانات</a> (يتطلب وجود جدول 'users')</li>
</ul>
<p>يرجى التأكد من تشغيل خدمات Memcached و Redis وقاعدة البيانات المختارة (MySQL أو PostgreSQL) داخل ServBay وضبط الإعدادات المقابلة في `config/web.php` و `config/db.php`.</p>
<p>لتجارب قواعد البيانات، يجب إنشاء جدول 'users' باستخدام "الترحيل" حسب التعليمات التالية.</p>
</div>
</div>
1
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
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
أضفنا روابط تسهّل تجربة الدوال الجديدة.
قواعد البيانات: إنشاء البنية (الترحيل)
لتجربة دوال قاعدة البيانات (actionMysqlAdd
, actionMysql
)، يجب إنشاء جدول users
في قاعدة البيانات. ينصح Yii باستخدام "الترحيل" (Migrations) لإدارة تغييرات بنية القاعدة.
إنشاء ملف ترحيل عبر Gii: افتح الطرفية في جذر المشروع، ونفذ أمر Yii لإنشاء ملف ترحيل جديد.
المسار لجذر المشروع:
- macOS:
/Applications/ServBay/www/servbay-yii2-app
- Windows:
C:\ServBay\www\servbay-yii2-app
bashphp yii migrate/create create_users_table
1سيطلب منك النظام التأكيد، أدخل
yes
. سيُنشئ ملف PHP جديد داخل مجلدmigrations
، باسم مثلmYYYYMMDD_HHMMSS_create_users_table.php
.- macOS:
تعديل ملف الترحيل: افتح الملف الجديد، وعدل دالة
up()
لتعريف بنية جدولusers
:php<?php use yii\db\Migration; /** * إدارة إنشاء جدول `{{%users}}`. */ class mXXXXXXXXXXXXXX_create_users_table extends Migration // XXXXXXXXXXXXXX هو الطابع الزمني { /** * {@inheritdoc} */ public function up() { $this->createTable('{{%users}}', [ // استخدام {{%users}} لدعم بادئة الجدول إن وجدت 'id' => $this->primaryKey(), 'name' => $this->string()->notNull(), 'email' => $this->string()->notNull()->unique(), 'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP'), 'updated_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ]); // اختياري: إنشاء فهرس لتسريع الاستعلامات $this->createIndex( 'idx-users-email', '{{%users}}', 'email', true // فهرس فريد ); } /** * {@inheritdoc} */ public function down() { // حذف الفهرس $this->dropIndex( 'idx-users-email', '{{%users}}' ); // حذف الجدول $this->dropTable('{{%users}}'); } }
1
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46عدّل اسم الكلاس
mXXXXXXXXXXXXXX_create_users_table
حسب اسم الملف الفعلي المُنشأ.تنفيذ الترحيل: من الطرفية في جذر المشروع، نفذ الأمر التالي لإنشاء جدول
users
بناءً على ما كتبته في دالةup()
:bashphp yii migrate
1سيطلب منك النظام التأكيد. أدخل
yes
. ستتلقى إشعار النجاح إذا تم إنشاء الجدول فعلاً.
اختبار الموقع وتجربة الوظائف
الآن يمكنك فتح المتصفح وزيارة النطاق الذي ضبطته في ServBay مثل https://servbay-yii2-test.local
.
- زيارة
https://servbay-yii2-test.local
: يجب أن ترى صفحة الترحيب لتطبيق Yii 2، مع روابط التجارب التي أدرجتها فيviews/site/index.php
. - جرب رابط "اختبار Memcached" أو زر زيارة
https://servbay-yii2-test.local/index.php?r=site/memcached
: إذا كانت خدمة Memcached مفعلة ومضبوطة، ستظهر رسالة نجاح. - جرب رابط "اختبار Redis" أو زر زيارة
https://servbay-yii2-test.local/index.php?r=site/redis
: إذا كانت خدمة Redis مفعلة ومضبوطة، ستظهر رسالة نجاح. - جرب رابط "إضافة مستخدم لقاعدة البيانات" أو زر زيارة
https://servbay-yii2-test.local/index.php?r=site/mysql-add
: إذا كانت قاعدة البيانات تعمل وجدولusers
موجود، ستظهر رسالة تبيّن نجاح الإضافة. كل زيارة ستضيف مستخدم جديد (ما لم يكن البريد مكرر ويمنعه الفهرس الفريد). - جرب رابط "جلب المستخدمين من قاعدة البيانات" أو زر زيارة
https://servbay-yii2-test.local/index.php?r=site/mysql
: إذا كانت قاعدة البيانات تعمل وجدولusers
موجود، ستظهر قائمة بالمستخدمين.
إذا واجهت مشاكل، تحقق من تشغيل جميع الخدمات المطلوبة (PHP، خادم الويب، قاعدة البيانات، Memcached، Redis) وضبط إعدادات مشروع Yii 2 (config/db.php
، config/web.php
) وصحة وجود الجداول المناسبة.
الأسئلة الشائعة (FAQ)
ظهور رسالة "تعذر الوصول إلى الموقع" أو خطأ في الشهادة؟ تحقق من إضافة النطاق بشكل صحيح في إعدادات "المواقع" في ServBay، ومن أن التطبيق يعمل فعلياً. يقوم ServBay تلقائياً بتهيئة DNS المحلي وشهادات SSL. إذا ظهرت مشاكل في الشهادة، تحقق من أنك وثقت ServBay User CA أو ServBay Public CA لدى نظامك. راجع وثائق ServBay لمزيد من التفاصيل.
تعذر تنفيذ أوامر Composer؟ تأكد من تفعيل حزمة Composer ضمن تطبيق ServBay ومن أنك تعمل عبر طرفية macOS أو Windows. ServBay يضيف Composer تلقائياً إلى PATH الخاص بك.
فشل الاتصال بقاعدة البيانات؟ تحقق من تشغيل خدمة قاعدة البيانات في ServBay (MySQL أو PostgreSQL). افحص القيم في
config/db.php
مثلdsn
، اسم المستخدم وكلمة المرور وتأكد من مطابقتها لإعدادات قاعدة بيانات ServBay. كذلك تأكد من إنشاء قاعدة بيانات باسمservbay_yii2_app
. استخدم Adminer المدمجة في ServBay للتحقق.عدم الاتصال بـ Memcached أو Redis؟ تحقق من تشغيل الخدمتين في ServBay، ومن صحة إعدادات
host
وport
في ملفconfig/web.php
(المفترض أن يكون127.0.0.1
والمنفذ الافتراضي لكل خدمة).فشل تنفيذ الترحيل (
php yii migrate
)? تحقق من إعداداتconfig/db.php
وصحة تشغيل قاعدة البيانات وتوافر قاعدة البيانات المنشأة.رسالة "جدول غير موجود" عند تجربة دوال قاعدة البيانات؟ نفذ أمر الترحيل
php yii migrate
لإنشاء جدولusers
.كيف أطلع على سجل أخطاء PHP؟ يقوم ServBay بتجميع سجلات الأخطاء للـ PHP وخادم الويب في مكان واحد. استخدم قسم "الملفات" أو "سجلات الأخطاء" في ServBay لمراجعة التفاصيل، ما يساعد في تشخيص المشاكل.
الخلاصة
يوفر ServBay حلاً سلساً لإنشاء بيئة تطوير محلية قوية وفعالة لمشاريع Yii 2 على macOS و Windows. مع الأدوات المدمجة مثل Composer، وإدارة إصدارات PHP، والدعم المدمج لقواعد البيانات وخدمات الكاش، وضبط المواقع بسهولة، يصبح بناء وتطوير مشروع Yii 2 عملية سلسة وسريعة. باتباع هذا الدليل يمكنك البدء في رحلتك مع تطوير Yii 2 والاستفادة من كامل إمكانيات ServBay لتعزيز الإنتاجية والكفاءة.
نتمنى لك تجربة تطوير ممتعة!