إنشاء وتشغيل مشروع CakePHP باستخدام ServBay
يُعد ServBay بيئة تطوير ويب محلية مصممة خصيصًا لنظام macOS، حيث يتكامل مع بيئات لغات متعددة مثل PHP، Node.js، Python، Go، Java وغيرها، بالإضافة إلى خدمات قواعد البيانات مثل MySQL وPostgreSQL وMongoDB وRedis، مع خيارات لخوادم الويب Caddy أو Nginx. يوفر ServBay منصة تطوير سهلة وفعّالة تتيح للمطورين إعداد وإدارة مشاريعهم المحلية بسهولة.
في هذا المقال، سنرشدك خطوة بخطوة إلى كيفية إنشاء، تهيئة، وتشغيل مشروع CakePHP ضمن بيئة ServBay. يُعتبر CakePHP أحد أطر عمل PHP الشائعة لبناء تطبيقات الويب، يُطبّق نموذج MVC (نموذج-عرض-تحكم)، ويشتهر بسرعة تطويره، وبتوفيره ORM قوي وخصائص أمان مدمجة. مع سهولة ServBay، يمكنك الانطلاق في تطوير CakePHP بسرعة فائقة.
ما هو CakePHP؟
CakePHP هو إطار عمل مفتوح المصدر لتطوير تطبيقات الويب بلغة PHP. يوفر بنية أساسية لتطوير تطبيقات ويب سريعة وذات هيكلية منظمة، دون التضحية بالمرونة. يعتمد مبدأ "الاتفاقية تفوق التكوين"، مما يبسط العديد من مهام التطوير الشائعة.
أهم ميزات وفوائد CakePHP
- قائم على بنية MVC: هيكلية واضحة سهلة للصيانة والتوسيع.
- تطوير سريع: أدوات سطر الأوامر (Bake) تولد الشيفرة تلقائياً لتسريع دورة التطوير.
- ORM قوي (رسم الخرائط الكائنية العلائقية): تسهيل التفاعل مع قواعد البيانات ودعم عدة أنواع منها.
- أمان مدمج: دفاعات مدمجة ضد CSRF، وهجمات حقن SQL، والتحقق من صحة المدخلات.
- محرك قوالب مرن: دعم عدة تقنيات لطبقة العرض.
- مجتمع نشط وملحقات غنية: سهولة الحصول على الدعم، وإمكانيات توسيع الوظائف.
- توثيق شامل: إرشادات مفصلة ومرجع API متكامل.
يُناسب CakePHP تطوير مختلف أنواع تطبيقات الويب، من واجهات برمجية بسيطة إلى أنظمة شركات معقدة.
إعداد بيئة تطوير CakePHP باستخدام ServBay
يوفر ServBay بيئة تكاملية مثالية لمطوري CakePHP، ويتضمن:
- مفسر PHP مُثبت مسبقاً مع الامتدادات الشائعة.
- مدير الحزم Composer مثبت مسبقاً.
- خادم ويب سهل التكوين (Caddy/Nginx).
- خدمات قواعد بيانات متكاملة (MySQL, PostgreSQL, Redis وغيرها).
بذلك لست بحاجة لإعداد كل هذه المكونات يدويًا أو التعامل مع تعقيدات التهيئة.
المتطلبات الأساسية
قبل البدء، تأكد من إنجاز ما يلي:
- تثبيت ServBay: تأكد من تحميل ServBay وتثبيته بنجاح على نظام macOS.
- تشغيل خدمات ServBay: ابدأ تطبيق ServBay وتحقق من تشغيل الحزم الضرورية (مثل PHP، وقاعدة البيانات التي ستستخدمها مثل MySQL أو PostgreSQL، بالإضافة إلى خدمات الكاش مثل Redis أو Memcached). يمكنك إدارة هذه الخدمات من تبويب "الحزم" في لوحة تحكم ServBay.
- الإلمام بأساسيات استخدام ServBay: احصل على فكرة عن كيفية إضافة وتكوين المواقع داخل ServBay. إذا لم تكن لديك خبرة، يُنصح أولاً بقراءة دليل استخدام ServBay الأساسي.
إنشاء مشروع CakePHP
يوصى بحفظ ملفات مشاريعك على المسار /Applications/ServBay/www
، مما يسهل على ServBay التعرف على الموقع وإدارته تلقائياً.
فتح الطرفية (Terminal)
قم بتشغيل تطبيق الطرفية في macOS.
انتقل إلى جذر مواقع ServBay
انتقل إلى دليل مواقع ServBay الموصى به:
bashcd /Applications/ServBay/www
1إنشاء مجلد المشروع
أنشئ مجلد فرعي جديد لمشروع CakePHP الخاص بك. سنستخدم اسم
servbay-cakephp-app
هنا كمثال:bashmkdir servbay-cakephp-app cd servbay-cakephp-app
1
2إنشاء مشروع CakePHP باستخدام Composer
ServBay يأتي مع Composer مثبتًا مسبقًا. أصبح بإمكانك إنشاء هيكل مشروع CakePHP كالتالي:
bashcomposer create-project --prefer-dist cakephp/app .
1سيقوم هذا الأمر بتحميل آخر إصدار مستقر من CakePHP وجميع تبعياته إلى المجلد الحالي (
.
).تثبيت محرك ORM (إذا كنت تستخدم PostgreSQL)
في حال رغبتك باستخدام PostgreSQL، عليك تثبيت محرك ORM الخاص به:
bashcomposer require cakephp/orm-pgsql
1أما بالنسبة لـ MySQL، فلا حاجة عادة لتثبيت محرك إضافي، إذ يأتي ضمن الاعتمادات الأساسية لـ CakePHP.
الضبط الأولي
بعد إنشاء المشروع، يجب عليك إعداد بعض التكوينات الأساسية وخاصة معلومات الاتصال بقاعدة البيانات.
ضبط متغيرات البيئة واتصال قاعدة البيانات
تتركز إعدادات البيئة المحلية في ملف
config/app_local.php
. عدل هذا الملف وابحث عن قسمDatasources
لتعيين معلومات الاتصال لقاعدة البيانات. افتراضيًا في ServBay، المستخدم غالبًا هوroot
وكلمة المرور هيpassword
.مثال على الاتصال بـ MySQL:
php// config/app_local.php 'Datasources' => [ 'default' => [ 'className' => \Cake\Database\Connection::class, 'driver' => \Cake\Database\Driver\Mysql::class, // أو \Cake\Database\Driver\Postgres::class مع PostgreSQL 'persistent' => false, 'host' => '127.0.0.1', // عنوان السيرفر، افتراضياً محلي //'port' => '3306', // منفذ MySQL الافتراضي 3306، أو 5432 لـ PostgreSQL 'username' => 'root', // اسم المستخدم الافتراضي لـ ServBay 'password' => 'password', // كلمة مرور ServBay الافتراضية 'database' => 'servbay_cakephp_app', // اسم قاعدة البيانات التي ستنشئها 'encoding' => 'utf8mb4', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, 'log' => false, /** * Set identifier quoting to true if you are using words like "user" as your table name. * But if you are using words like "cake" you can set it to false. * If you don't know use true. */ 'quoteIdentifiers' => false, /** * Current limitations include the following: * - Most drivers do not support setting isolation levels via PDO options. * Using them will result in an error. * - Not all drivers support setting the charset via PDO options. * Using them will result in an error. * - PDO options are not supported for packaged drivers like Postgres from CakePHP. * For Postgres, you only need to set the encoding. */ 'options' => [], //'url' => env('DATABASE_URL', null), // إذا كنت تستخدم متغير البيئة DATABASE_URL، فعّل هذا السطر ], ],
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عدّل الحقول الخاصة بالـ
driver
والمنفذ وفق قاعدة البيانات المستخدمة (MySQL أو PostgreSQL)، وتأكد من أن اسمdatabase
يطابق ما أنشأته بالفعل.
تكوين خادم الويب (إنشاء موقع في ServBay)
لكي تستطيع تصفح مشروع CakePHP الخاص بك عبر المتصفح، عليك إنشاء موقع جديد في ServBay يشير إلى مجلد مشروعك.
افتح لوحة تحكم ServBay
انقر على أيقونة ServBay ثم افتح لوحة التحكم.
انتقل إلى تبويب "المواقع"
من القائمة الجانبية في لوحة تحكم ServBay، اختر "المواقع" (سابقاً "المضيفات").
إضافة موقع جديد
انقر على زر
+
في الأسفل لإضافة موقع جديد واملأ المعلومات التالية:- الاسم (Name): اختر اسمًا تعريفياً للموقع مثل
My CakePHP Dev Site
. - النطاق (Domain): اختر نطاقًا للتطوير المحلي مثل
servbay-cakephp-test.local
. سيوجهه ServBay إلى جهازك تلقائياً. - نوع الموقع (Site Type): اختر
PHP
. - إصدار PHP (PHP Version): اختر الإصدار المناسب لك (عادة CakePHP 4+ يحتاج PHP 7.4+، وCakePHP 5+ يتطلب PHP 8.1+)، كـ
8.3
. - جذر المستندات (Document Root): مهم! جذر خادم الويب الخاص بمشروع CakePHP هو المجلد الفرعي
webroot
وليس مجلد المشروع الرئيسي. ضعه كالتالي/Applications/ServBay/www/servbay-cakephp-app/webroot
(استبدلservbay-cakephp-app
باسم مجلد مشروعك الفعلي).
- الاسم (Name): اختر اسمًا تعريفياً للموقع مثل
حفظ وتطبيق التعديلات
بعد ملء كافة البيانات اضغط زر “حفظ” بالأسفل. سيطلب منك ServBay تأكيد تنفيذ التغييرات، وافق. سيقوم ServBay تلقائيًا بإعداد (Caddy أو Nginx) وخدمة الموقع الجديد باسم نطاقك المحلي، ويوجه الطلبات إلى مجلد
webroot
الخاص بمشروعك.
للمزيد من التفاصيل يمكنك مراجعة إضافة أول موقع في وثائق ServBay.
التحقق من الإعداد الأساسي
يمكنك الآن تجربة الموقع على المتصفح بزيارة النطاق الذي اخترته في إعدادات ServBay مثل https://servbay-cakephp-test.local
.
إذا كان كل الإعدادات صحيحة، سترى صفحة الترحيب الافتراضية لـ CakePHP، ما يعني أن بيئة PHP، خادم الويب وإعدادات ServBay تعمل كما ينبغي.
دمج قواعد البيانات وخدمات الكاش
يمنحك CakePHP ORM قوي وطبقة مجردة للكاش، ما يتيح سهولة الدمج مع قواعد بيانات ServBay وخدمات التخزين المؤقت.
مثال قواعد بيانات علائقية (MySQL / PostgreSQL)
سيُوضح هذا المثال كيفية استعمال ORM في CakePHP للاتصال مع قاعدة بيانات MySQL أو PostgreSQL المُدارة عبر ServBay، وإنشاء جدول users
بسيط وإجراء عمليات CRUD.
إنشاء قاعدة بيانات في ServBay
قبل الترحيل قم بإنشاء قاعدة البيانات باستخدام أدوات الإدارة المثبتة في ServBay (مثل phpMyAdmin لـ MySQL/MariaDB, pgAdmin لـ PostgreSQL أو برامج ثالثة مثل Navicat/DBeaver)، وادخل باستخدام
127.0.0.1
واسم المستخدمroot
وكلمة المرورpassword
ثم أنشئ قاعدة بيانات باسمservbay_cakephp_app
.إنشاء ملف نموذج ORM
يحتاج CakePHP لملف نموذج يمثل الجدول، مثلا
UsersTable.php
يمثل جدولusers
.احفظ الشيفرة التالية في
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; use Cake\Validation\Validator; // إذا كنت ترغب في وضع قواعد تحقق class UsersTable extends Table { /** * Initialize method * * @param array $config The configuration for the Table. * @return void */ public function initialize(array $config): void { parent::initialize($config); $this->setTable('users'); // تحديد اسم الجدول بشكل صريح $this->setDisplayField('name'); // تعيين الحقل الافتراضي للعرض $this->setPrimaryKey('id'); // تعيين الحقل الرئيسي // لتفعيل سلوك الطوابع الزمنية // $this->addBehavior('Timestamp'); } /** * Default validation rules. * * @param \Cake\Validation\Validator $validator Validator instance. * @return \Cake\Validation\Validator */ public function validationDefault(Validator $validator): Validator { $validator ->scalar('name') ->maxLength('name', 255) ->requirePresence('name', 'create') ->notEmptyString('name'); $validator ->email('email') ->requirePresence('email', 'create') ->notEmptyString('email') ->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); // تأكد من أن البريد الإلكتروني فريد return $validator; } }
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استخدام أداة Bake لإنشاء ملف ترحيل قاعدة البيانات
من الأفضل استخدام الهجرة لإدارة بنية قاعدة البيانات. من جذر مشروعك (
/Applications/ServBay/www/servbay-cakephp-app
) استخدم أداة Bake لإنشاء ملف ترحيل:bashbin/cake bake migration CreateUsers name:string email:string:unique
1سينتج هذا ملف هجرة جديد يتضمن تعليمات إنشاء الجدول
users
مع حقليname
وemail
(وهو فريد).تشغيل الهجرة
طبق الهجرة الفعلية لإنشاء الجدول في القاعدة:
bashbin/cake migrations migrate
1عند التنفيذ الناجح، سيظهر جدول
users
في قاعدة البيانات.تأكيد تكوين الاتصال بقاعدة البيانات (إذا لم يتم مسبقا)
تأكد من مطابقة إعدادات
config/app_local.php
لقيم قاعدة بياناتك.مثال إعداد MySQL:
php'Datasources' => [ 'default' => [ 'className' => \Cake\Database\Connection::class, 'driver' => \Cake\Database\Driver\Mysql::class, 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', // ... باقي الإعدادات ], ],
1
2
3
4
5
6
7
8
9
10
11مثال إعداد PostgreSQL:
php'Datasources' => [ 'default' => [ 'className' => \Cake\Database\Connection::class, 'driver' => \Cake\Database\Driver\Postgres::class, 'host' => '127.0.0.1', // 'port' => '5432', // المنفذ الافتراضي 'username' => 'root', // اسم المستخدم الافتراضي لـ ServBay 'password' => 'password', // كلمة مرور افتراضية 'database' => 'servbay_cakephp_app', // ... بقية الإعدادات ], ],
1
2
3
4
5
6
7
8
9
10
11
12
إضافة مسارات ومتحكم لعرض البيانات
عدل ملف
config/routes.php
لإضافة مسارات لإدخال وعرض المستخدمين:php// config/routes.php use Cake\Routing\RouteBuilder; use Cake\Routing\Router; use Cake\Routing\Route\DashedRoute; Router::defaultRouteClass(DashedRoute::class); Router::scope('/', function (RouteBuilder $routes) { // ... مسارات أخرى $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); // مسارات أمثلة قاعدة البيانات $routes->connect('/db-add-user', ['controller' => 'Pages', 'action' => 'dbAddUser']); $routes->connect('/db-list-users', ['controller' => 'Pages', 'action' => 'dbListUsers']); // ... مسارات أخرى $routes->fallbacks(DashedRoute::class); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18ثم أضف طرقًا في ملف
src/Controller/PagesController.php
لإجراء العمليات على القاعدة:php<?php namespace App\Controller; use Cake\Http\Response; use Cake\ORM\TableRegistry; use Cake\Datasource\Exception\RecordNotFoundException; // للتعامل مع أخطاء البحث class PagesController extends AppController { /** * عرض الصفحة الافتراضية * * @param array ...$path Path segments. * @return \Cake\Http\Response|null */ public function display(...$path): ?Response { // ... العرض الافتراضي return new Response(['body' => 'Hello ServBay! This is the default page.']); } /** * مثال قاعدة البيانات: إضافة مستخدم */ public function dbAddUser(): Response { $usersTable = TableRegistry::getTableLocator()->get('Users'); // احصل على كائن الجدول // أنشئ كيان مستخدم جديد $user = $usersTable->newEntity([ 'name' => 'ServBay Demo User', 'email' => '[email protected]' // بريد تجريبي ]); // حاول حفظ الكيان if ($usersTable->save($user)) { return new Response(['body' => 'User added successfully! User ID: ' . $user->id]); } else { // في حال الفشل، قد يكون هناك أخطاء تحقق أو خلافه $errors = $user->getErrors(); // استخرج أخطاء التحقق return new Response(['body' => 'Failed to add user. Errors: ' . json_encode($errors)]); } } /** * مثال قاعدة البيانات: عرض جميع المستخدمين */ public function dbListUsers(): Response { $usersTable = TableRegistry::getTableLocator()->get('Users'); // احصل على الجدول // احصل على جميع المستخدمين $users = $usersTable->find()->all(); // خرج الناتج كـ JSON return new Response(['body' => json_encode($users->toArray())]); // تحويل المجموعة لمصفوفة } }
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استخدام أمثلة قاعدة البيانات
افتح متصفحك:
- انتقل إلى
https://servbay-cakephp-test.local/db-add-user
لإضافة مستخدم جديد (سترى رسالة نجاح). - ثم إلى
https://servbay-cakephp-test.local/db-list-users
لعرض جميع المستخدمين (يجب أن يظهر المستخدم الجديد).
- انتقل إلى
هذه الخطوات تكفل ربط CakePHP بقواعد البيانات في ServBay وتنفيذ عمليات ORM الأساسية.
مثال خدمات الكاش (Memcached / Redis)
CakePHP يوفر واجهة موحدة للكاش يمكن بها التبديل بسهولة بين Memcached وRedis. يوجد دعم لهذه الامتدادات مُثبت ضمن ServBay ويمكن تفعيل الخدمات من لوحة التحكم.
ضبط الاتصال بالكاش
عدل ملف
config/app_local.php
في قسمCache
بحسب نوع الخدمة:مثال إعداد Memcached:
php// config/app_local.php 'Cache' => [ 'default' => [ 'className' => \Cake\Cache\Engine\MemcachedEngine::class, 'servers' => ['127.0.0.1:11211'], // عنوان ومنفذ Memcached الافتراضي 'prefix' => 'servbay_cakephp_', // بادئة مفاتيح الكاش ], // ... بقية الإعدادات ],
1
2
3
4
5
6
7
8
9مثال إعداد Redis:
php// config/app_local.php 'Cache' => [ 'default' => [ 'className' => \Cake\Cache\Engine\RedisEngine::class, 'host' => '127.0.0.1', // عنوان Redis الافتراضي 'port' => 6379, // منفذ Redis الافتراضي 'password' => null, // أدخل كلمة المرور إذا كانت مطلوبة 'database' => 0, // فهرس قاعدة البيانات الخاصة بـ Redis 'prefix' => 'servbay_cakephp_', // بادئة الكاش ], // ... باقي الإعدادات ],
1
2
3
4
5
6
7
8
9
10
11
12
اختر الخدمة التي تناسبك وأضف إعداد المسار المناسب إليه.
إضافة مسارات وأكواد تحكم للكاش
أضف إلى
config/routes.php
مسارات الكاش:php// config/routes.php // ... مسارات أخرى $routes->connect('/cache-memcached', ['controller' => 'Pages', 'action' => 'cacheMemcached']); $routes->connect('/cache-redis', ['controller' => 'Pages', 'action' => 'cacheRedis']); // ... مسارات أخرى
1
2
3
4
5وأضف في
src/Controller/PagesController.php
طرقاً خاصة بالكاش:php<?php namespace App\Controller; use Cake\Http\Response; use Cake\Cache\Cache; // استيراد كلاس Cache // ... استخدامات أخرى class PagesController extends AppController { // ... طرق أخرى (display, dbAddUser, dbListUsers) /** * مثال الكاش: استخدام Memcached */ public function cacheMemcached(): Response { // تأكد من ضبط "default" على MemcachedEngine في app_local.php $cacheKey = 'servbay_memcached_test_key'; $cachedData = Cache::read($cacheKey); // قراءة القيمة من الكاش $responseBody = ''; if ($cachedData === false) { // الكاش فارغ $responseBody = 'Cache miss! Writing "Hello Memcached!" to cache.'; $dataToCache = 'Hello Memcached!'; Cache::write($cacheKey, $dataToCache, 'default'); // اكتب في الكاش } else { // تم العثور على القيمة في الكاش $responseBody = 'Cache hit! Data from cache: ' . $cachedData; } return new Response(['body' => $responseBody]); } /** * مثال الكاش: استخدام Redis */ public function cacheRedis(): Response { // تأكد من تعيين "default" على RedisEngine $cacheKey = 'servbay_redis_test_key'; $cachedData = Cache::read($cacheKey); // قراءة القيمة $responseBody = ''; if ($cachedData === false) { // الكاش فارغ $responseBody = 'Cache miss! Writing "Hello Redis!" to cache.'; $dataToCache = 'Hello Redis!'; Cache::write($cacheKey, $dataToCache, 'default'); // الكتابة في الكاش } else { // القيمة في الكاش $responseBody = 'Cache hit! Data from cache: ' . $cachedData; } return new Response(['body' => $responseBody]); } }
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تجربة أمثلة الكاش
افتح المتصفح:
- إذا أعددت Memcached، انتقل إلى
https://servbay-cakephp-test.local/cache-memcached
لرؤية رسالة "Cache miss" في أول مرة، ثم "Cache hit" عند إعادة التحميل. - إذا أعددت Redis، جرب
https://servbay-cakephp-test.local/cache-redis
بنفس الطريقة.
- إذا أعددت Memcached، انتقل إلى
هذا يدل أن مشروعك يتكامل بشكل سليم مع خدمات التخزين المؤقت من ServBay.
ملاحظات هامة
- بيانات الاعتماد: ينصح بعدم استخدام اسم المستخدم وكلمة المرور الافتراضية (
root
/password
) في بيئة الإنتاج، واقتصارها على التطوير المحلي فقط. - جذر الموقع: تأكد دائماً من تعيين مجلد "جذر الموقع" في ServBay ليشير إلى مجلد
webroot
الفرعي وليس مجلد المشروع الرئيسي، اتباعًا لممارسات CakePHP المثلى. - توافق إصدار PHP: تحقق دائمًا من أن إصدار PHP المختار في ServBay متوافق مع إصدار CakePHP الخاص بك (راجع توثيقات CakePHP).
- منافذ ServBay: إذا كان هناك تعارض أو استخدام للمنافذ الافتراضية (مثل 80 و443)، يمكنك تغييرها من إعدادات ServBay وضبط hosts أو استخدام رقم المنفذ فيه زيارتك للنطاق.
الأسئلة الشائعة (FAQ)
- س: عند زيارة
servbay-cakephp-test.local
تظهر لي رسالة "الصفحة غير موجودة"؟- ج: تأكد من أن "جذر الموقع" في ServBay مضبوط إلى
/Applications/ServBay/www/servbay-cakephp-app/webroot
. - تحقق أن خادم الويب (Caddy/Nginx) قيد التشغيل في ServBay.
- تحقق من أن ملف hosts في النظام يربط
servbay-cakephp-test.local
بـ127.0.0.1
(غالباً يتم ذلك تلقائياً). - افحص أيضاً ملفات
.htaccess
في مشروع CakePHP أو إعدادات خادم الويب.
- ج: تأكد من أن "جذر الموقع" في ServBay مضبوط إلى
- س: فشل الاتصال بقاعدة البيانات؟
- ج: تأكد من أن الخدمة (MySQL/PostgreSQL) فعالة في ServBay.
- تحقق من تفاصيل قاعدة البيانات في
config/app_local.php
(host, port, username, password, database). - تأكد أنك أنشأت قاعدة بيانات باسم
servbay_cakephp_app
.
- س: لا يمكن تنفيذ أوامر Composer (
bin/cake
)؟- ج: تأكد أنك في مجلد المشروع (
/Applications/ServBay/www/servbay-cakephp-app
). - احرص على تشغيل حزم PHP وComposer في ServBay.
- تحقق من توفر أمر
php
في PATH الطرفية (يمكن استخدام الطرفية المدمجة مع ServBay أو ضبط PATH يدوياً).
- ج: تأكد أنك في مجلد المشروع (
الخلاصة
يمنحك ServBay قدرة سريعة وسهلة لإعداد بيئة تطوير CakePHP على macOS. تتكامل خدمات PHP وComposer وخوادم الويب وقواعد البيانات تلقائياً لتبسيط دورة التطوير. هذا الدليل الشامل يغطي جميع الخطوات من إنشاء المشروع، إلى التهيئة والتكامل مع قواعد البيانات والكاش، لمساعدتك على البدء بسرعة في تطوير CakePHP. استفد من انسيابية ServBay للتركيز على الشيفرة بعيدًا عن تعقيدات إعداد البيئة.