إنشاء وتشغيل مشروع Yii 2 باستخدام ServBay
لمحة عامة: ما هو Yii 2؟
إطار العمل Yii 2 هو إطار PHP عالي الأداء قائم على المكونات، يتيح تطوير تطبيقات الويب العصرية بسرعة وكفاءة. يعتمد نهج MVC (النموذج-العرض-المتحكِّم)، ويقدم مجموعة واسعة من الأدوات والميزات التي تساعد المطورين في بناء تطبيقات ويب عالية الجودة وقابلة للتوسع. حصل Yii 2 على شعبية كبيرة نظرًا لأدائه المتميز، وبنيته المرنة، وخصائصه المدمجة القوية مثل التخزين المؤقت، الأمان، ودعم تطوير واجهات RESTful API.
الميزات والفوائد الأساسية لـ Yii 2
- أداء عالي: تم تحسين Yii 2 بعناية لمعالجة الطلبات عالية التوازي، مما يجعله ملائمًا للغاية للتطبيقات الحساسة للأداء.
- بنيوية معيارية: الإطار مصمم ليكون معياريًا جدًا، مما يسهل تنظيم الكود وإعادة استخدام المكونات.
- أمان متقدم: يوفر ميزات أمان مدمجة مثل التحقق من المدخلات، فلترة المخارج، الحماية من CSRF/XSS، وأطر للمصادقة والصلاحيات.
- سهولة الاستخدام: يوفر API بسيطًا وموثقًا بشكل جيد، مما يمكّن المطورين من البدء بسرعة ويقلل حاجز التعلم.
- دعم مجتمعي قوي: هناك مجتمع نشط من المطورين مع مكتبات إضافية غنية، لذا يمكنك إيجاد المساعدة بسهولة عند مواجهة المشكلات.
- أدوات متكاملة: يتوفر أدوات سطر أوامر لإدارة المهام الشائعة مثل ترحيل قواعد البيانات وتوليد الكود، مما يزيد الإنتاجية.
يُعتبر Yii 2 خيارًا ممتازًا لبناء تطبيقات المؤسسات، وواجهات RESTful، وبوابات الإنترنت وغيرها من مشاريع الويب المتنوعة.
تشغيل مشروع Yii 2 باستخدام ServBay
ServBay هو بيئة تطوير ويب محلية مُصممة خصيصًا لنظام macOS، فهو يدمج PHP، وقواعد بيانات متعددة (مثل MySQL وPostgreSQL وMongoDB وRedis)، وخوادم الويب (Caddy وNginx)، وأدوات للمطورين (Composer وNode.js وPython وGo وJava والمزيد)، ليمنحك منصة تطوير متكاملة وجاهزة للاستخدام الفوري.
سيرشدك هذا الدليل إلى كيفية الاستفادة من بيئة PHP المدمجة في ServBay، وأداة Composer، وخدمات قواعد البيانات لإنشاء مشروع تطبيق Yii 2 أساسي وتشغيله. سنستخدم ميزة "المواقع" في ServBay لتكوين خادم الويب المحلي الخاص بك، وخطوات بسيطة لعرض المشروع وتجربة وظائفه الأساسية.
المتطلبات الأساسية
قبل أن تبدأ، تأكد من أنك:
- قمت بتثبيت وتشغيل ServBay بنجاح على جهاز بنظام macOS.
- قمت بتثبيت وتفعيل إصدار PHP المطلوب في ServBay (مثل PHP 8.3 أو أعلى).
- قمت بتثبيت وتفعيل خدمات قواعد البيانات (مثل MySQL أو PostgreSQL) وخدمات التخزين المؤقت (Memcached وRedis) المراد استخدامها في ServBay.
يمكنك فحص وإدارة الحزم المثبتة وحالتها في واجهة ServBay الأساسية.
إنشاء مشروع Yii 2
TIP
تنصحك ServBay بوضع ملفات مشروعك في المسار /Applications/ServBay/www
للحفاظ على تنظيم بنية الملفات وسهولة إدارة ميزات الموقع في ServBay.
Composer: ServBay يتضمن أداة Composer بشكلٍ مدمج، لذا لا تحتاج لتثبيتها يدويًا. استخدم أمر
composer
مباشرة في الطرفية.إنشاء مجلد المشروع: افتح الطرفية وادخل إلى جذر مواقع ServBay، ثم أنشئ مجلدًا جديدًا للمشروع.
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app
1
2
3إنشاء مشروع Yii 2 عبر Composer: أثناء التواجد في مجلد
servbay-yii2-app
، شغّل الأمر التالي لإنشاء نموذج تطبيق Yii 2 أساسي:bashcomposer create-project --prefer-dist yiisoft/yii2-app-basic .
1سيقوم هذا الأمر بتنزيل نموذج تطبيق Yii 2 وجميع الاعتمادات في هذا المجلد (
.
). انتظر حتى يكمل Composer التحميل والتثبيت.الدخول إلى مجلد المشروع: تأكد أن الطرفية في مجلد المشروع
/Applications/ServBay/www/servbay-yii2-app
، حيث ستنفذ الأوامر اللاحقة هناك.bashcd /Applications/ServBay/www/servbay-yii2-app
1
إعداد التكوين الأساسي
بعد إنشاء مشروع Yii 2، عليك إعداد بعض التكوينات الأساسية، وخاصةً ما يتعلق باتصال قاعدة البيانات وتكوينات المكونات الأخرى.
إعداد اتصال قاعدة البيانات: عدل ملف
config/db.php
في جذر المشروع. بناءً على خدمة قاعدة البيانات التي تعمل عليها في ServBay (MySQL أو PostgreSQL) وتكوينها (المستخدم الافتراضي غالبًاroot
وكلمة المرور الافتراضية غالبًاpassword
ما لم تقم بتغييرها)، عدل معلومات الاتصال.أولاً، عليك إنشاء قاعدة بيانات جديدة عبر خدمة قاعدة بيانات ServBay لهذا المشروع (مثلاً باسم
servbay_yii2_app
). يمكنك استخدام أداة Adminer المدمجة في ServBay أو أي عميل قواعد بيانات مثل 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', // ننصح باستخدام 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 و port حسب إعداداتك 'username' => 'root', // اسم مستخدم القاعدة 'password' => 'password', // كلمة المرور 'charset' => 'utf8', 'schemaMap' => [ 'pgsql' => [ 'class' => 'yii\pgsql\Schema', 'defaultSchema' => 'public', // قيمة افتراضية لـ PostgreSQL ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15اختر العينة المناسبة وعدل ملف
config/db.php
حسب حاجتك.إعداد نظام التخزين المؤقت ومكون Redis: عدل ملف
config/web.php
في جذر المشروع، وأضف التكوينات الخاصة بـ Memcached وRedis ضمن قسمcomponents
. منفذ 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, // المنفذ الافتراضي '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، لكن قد تحتاج لتثبيتها يدويًا باستخدامcomposer require yiisoft/yii2-redis
عند الحاجة). بالنسبة لـ Memcached عادة ما يستعملyiisoft/yii2-memcached
. قد يتضمن النموذج الأساسي هذه الحزم بالفعل.
إعداد خادم الويب (مواقع ServBay)
استخدم ميزة "المواقع" في ServBay لإعداد خادم الويب المحلي (Caddy أو Nginx) وربط مشروعك بها.
- فتح تطبيق ServBay: شغّل التطبيق على جهازك.
- التوجه إلى إعدادات المواقع: في الواجهة، ابحث عن خيار "المواقع" أو ما يشبهه واضغط عليه.
- إضافة موقع جديد: انقر على زر إضافة موقع جديد (
+
أوإضافة
عادةً). - تعبئة معلومات الموقع:
- الاسم: اسم دلالي مثل
موقعي الأول لتطوير Yii 2
. - اسم النطاق: اكتب نطاقًا للاستخدام في المتصفح مثل
servbay-yii2-test.local
. سيقوم ServBay تلقائيًا بربط هذا النطاق بـ127.0.0.1
. - نوع الموقع: اختر
PHP
. - إصدار PHP: حدد الإصدار الذي تريد استخدامه (مثلاً
8.3
). تأكد أنه مثبت ومفعل في ServBay. - دليل الجذر: وهذه خطوة هامة للغاية. في نموذج Yii 2 الأساسي، نقطة الدخول هي مجلد
web
في جذر المشروع. لذا اجعل دليل الموقع:/Applications/ServBay/www/servbay-yii2-app/web
.
- الاسم: اسم دلالي مثل
- الحفظ والتفعيل: احفظ الإعدادات وسيتم إعادة تحميل إعدادات الخادم تلقائيًا.
للمزيد من التفاصيل حول إعداد المواقع راجع توثيقات ServBay الرسمية: إضافة أول موقع.
سيقوم ServBay تلقائيًا بإنشاء شهادة SSL ذات موثوقية محلية لنطاق التطوير (عن طريق ServBay User CA أو ServBay Public CA)، وبذلك يمكنك تصفح الموقع عبر HTTPS.
إضافة كود تجريبي لعرض الوظائف
لإظهار استخدام قاعدة البيانات ونظام التخزين المؤقت، سنضيف بعض الإجراءات في وحدة التحكم الافتراضية لـ Yii 2.
عدل الملف controllers/SiteController.php
في جذر المشروع، وأضف الطرق التالية إلى صف SiteController
:
<?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. يرجى التحقق من خدمة 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. يرجى التحقق من خدمة Redis وإعداداتها.");
}
} catch (\yii\base\Exception $e) {
return $this->asText("خطأ في Redis: " . $e->getMessage() . ". يرجى التحقق من خدمة Redis وإعداداتها.");
}
}
/**
* مثال على إضافة مستخدم لقاعدة البيانات.
* يفترض وجود جدول 'users'.
*
* @return Response
*/
public function actionMysqlAdd() // يمكن استخدامه مع PostgreSQL أيضًا بالإعداد المناسب
{
try {
$count = Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay Demo User', // اسم تجريبي متعلق بالعلامة التجارية
'email' => '[email protected]', // بريد إلكتروني تجريبي متعلق بالعلامة التجارية
])->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;
}
}
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
يرجى الانتباه أنني أضفت معالجة للأخطاء وتعديل تنسيق الإخراج لتوضيح الرسائل في طرق actionMysqlAdd
وactionMysql
. كما أضفت أسماء وعناوين بريدية تجريبية تتناسب مع معايير علامة ServBay.
يمكنك تعديل ملف العرض المقابل views/site/index.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' باستخدام الهجرة (migration) كما سيتم شرحها أدناه.</p>
</div>
</div>
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 لإنشاء ملف الهجرة: في الطرفية، تأكد أنك في جذر المشروع
/Applications/ServBay/www/servbay-yii2-app
، ثم شغل الأمر التالي:bashphp yii migrate/create create_users_table
1سيتم سؤالك للتأكيد، أكتب
yes
ثم اضغط Enter. سيظهر ملف هجرة جديد في مجلدmigrations
باسم مثلmYYYYMMDD_HHMMSS_create_users_table.php
.تعديل ملف الهجرة: افتح الملف، وأضف فيه تعريف هيكلية جدول
users
داخل دالةup()
: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
باسم الملف الذي تم إنشاؤه.تشغيل الهجرة: في الطرفية بينما أنت في جذر المشروع، نفذ:
bashphp yii migrate
1سيتم سؤالك للتأكيد، أدخل
yes
واضغط Enter. إذا سارت الأمور بنجاح، سيظهر تنبيه بإنشاء الجدول.
تصفح الموقع وإجراء الاختبارات
يمكنك الآن فتح متصفحك وزيارة النطاق الذي قمت بإعداده، مثل https://servbay-yii2-test.local
.
- زيارة
https://servbay-yii2-test.local
: يجب أن ترى صفحة الترحيب لمشروع Yii 2 وروابط الاختبار التي أضفناها. - اضغط رابط "اختبار Memcached" أو زر بزيارة
https://servbay-yii2-test.local/index.php?r=site/memcached
: إذا كان Memcached قيد التشغيل ومُعد بطريقة صحيحة، سترى نصًا مثل "تم تعيين قيمة Memcached بنجاح...". - اضغط رابط "اختبار Redis" أو زر بزيارة
https://servbay-yii2-test.local/index.php?r=site/redis
: إذا كان 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 موجود، سترى قائمة بالمستخدمين المسترجعين.
إذا واجهت أي مشاكل، تحقق من تشغيل الخدمات المطلوبة في ServBay (PHP، خادم الويب، قاعدة البيانات، Memcached، Redis)، وتأكد من صحة الإعدادات في ملفات مشروعك (config/db.php
, config/web.php
) وأن الجدول المطلوب تم إنشاؤه.
الأسئلة الشائعة (FAQ)
- لماذا تظهر رسالة "لا يمكن الوصول إلى الموقع" أو خطأ في الشهادة عند تصفح النطاق؟ تأكد من أنك أضفت النطاق بشكل صحيح في إعدادات الموقع في ServBay وأن التطبيق نفسه قيد التشغيل. يقوم ServBay تلقائيًا بإعداد DNS محلي وشهادات SSL. إذا ظهرت مشكلة في الشهادة، فتأكد من أنك أجريت عملية توثيق (Trust) لشهادة ServBay User CA أو ServBay Public CA عبر التعليمات في توثيقات ServBay.
- لماذا لا يمكن تنفيذ أوامر Composer؟ تأكد من أنك قمت بتفعيل حزمة Composer في واجهة ServBay وتعمل من طرفية macOS المحلية. يضيف ServBay تلقائيًا Composer إلى متغير PATH الخاص بك.
- فشل اتصال قاعدة البيانات؟ تحقق مما إذا كانت خدمة قاعدة البيانات (MySQL أو PostgreSQL) قيد التشغيل، وأن المتغيرات
dsn
,username
,password
فيconfig/db.php
تطابق إعدادات ServBay لديك. تأكد أيضًا من إنشاء قاعدة البيانات المطلوبة (servbay_yii2_app
). يمكنك استخدام أداة Adminer للتحقق من الاتصال وعرض قواعد البيانات. - فشل الاتصال بـ Memcached أو Redis؟ تأكد من تشغيل الخدمة المعنية في ServBay، وأن إعدادات
host
وport
فيconfig/web.php
صحيحة (القيم الافتراضية هي127.0.0.1
وأرقام المنافذ الافتراضية للخدمات). - فشل عملية الهجرة (
php yii migrate
)? تحقق من صحة إعدادات ملفconfig/db.php
، وأن قاعدة البيانات فعّالة وأنشأت قاعدة البيانات المستهدفة. - رسالة أن جدول users غير موجود في إجراءات
actionMysqlAdd
/actionMysql
؟ عليك تنفيذ أمر الهجرةphp yii migrate
لإنشاء الجدول. - كيف أستعرض سجل أخطاء PHP؟ تجمع ServBay جميع سجلات أخطاء PHP وسجلات خادم الويب في قسم "السجلات" في واجهته الرئيسية ليسهل عليك التشخيص.
ملخص
مع ServBay، يمكنك إنجاز بيئة تطوير محلية متكاملة لتشغيل مشاريع Yii 2 على نظام macOS بسهولة. تسهّل لك أدوات مثل Composer المثبتة مسبقًا، إدارة نسخ PHP، الخدمات المدمجة لقواعد البيانات والتخزين المؤقت، وخصائص إعداد المواقع، الانطلاق بتطوير عمليتك البرمجية بسرعة وكفاءة. باتباع هذا الدليل، يمكنك بدء مشروع Yii 2 الخاص بك والاعتماد على إمكانيات ServBay لتحسين الإنتاجية وتجربة التطوير.
نتمنى لك تجربة تطوير ممتعة!