การสร้างและรันโปรเจกต์ Yii 2 ด้วย ServBay
ภาพรวม: Yii 2 คืออะไร?
Yii 2 เป็นเฟรมเวิร์ก PHP ประสิทธิภาพสูงที่ใช้แนวคิดแบบคอมโพเนนต์ เหมาะสำหรับการพัฒนาเว็บแอปสมัยใหม่อย่างรวดเร็ว โดยอิงตามรูปแบบ MVC (Model-View-Controller) มีฟีเจอร์และเครื่องมือครบครัน ช่วยให้นักพัฒนาสร้างเว็บแอปที่ปรับขยายได้และมีคุณภาพสูงอย่างมีประสิทธิภาพ Yii 2 ได้รับความนิยมอย่างมากเพราะสถาปัตยกรรมที่ยืดหยุ่น การทำงานเร็ว และฟังก์ชันในตัวที่หลากหลาย เช่น แคช ระบบความปลอดภัย รองรับ RESTful API ฯลฯ
จุดเด่นและข้อดีหลักของ Yii 2
- ประสิทธิภาพสูง: ผ่านการปรับแต่งมาอย่างดี ให้รองรับโหลดสูง เหมาะสำหรับโปรเจกต์ที่เน้นความเร็ว
- โมดูล่าร์: โครงสร้างออกแบบมาเพื่อให้แยกส่วนและนำกลับมาใช้ซ้ำได้สะดวก
- ความปลอดภัย: มีฟีเจอร์ความปลอดภัยครบ เช่น การตรวจสอบอินพุต, การกรองเอาต์พุต, ป้องกัน CSRF/XSS, ระบบยืนยันตัวตนและสิทธิการใช้งาน
- ใช้งานง่าย: API เข้าใจง่าย มีเอกสารอธิบายละเอียด ลดภาระการเรียนรู้
- ชุมชนแข็งแกร่ง: มีนักพัฒนาชุมชนที่กระตือรือร้น รองรับและมีไลบรารีเสริมให้เลือกมากมาย
- เครื่องมือช่วย: มีเครื่องมือ CLI สำหรับจัดการ migration ฐานข้อมูล, code generation เป็นต้น เพิ่มความเร็วและความคล่องตัวในการพัฒนา
Yii 2 เหมาะกับตั้งแต่ระบบองค์กร แอปพลิเคชัน RESTful API พอร์ทัลเว็บไซต์ และโปรเจกต์ประเภทเว็บอีกมากมาย
การรันโปรเจกต์ Yii 2 ด้วย ServBay
ServBay คือสภาพแวดล้อมพัฒนาเว็บแบบ local สำหรับ macOS โดยเฉพาะ รวม PHP, ฐานข้อมูลหลายประเภท (MySQL, PostgreSQL, MongoDB, Redis), เว็บเซิร์ฟเวอร์ (Caddy, Nginx) และเครื่องมือพัฒนาอื่น ๆ (Composer, Node.js, Python, Go, Java ฯลฯ) ไว้ให้ ซึ่งช่วยให้นักพัฒนาทำงานได้ทันทีโดยไม่ต้องตั้งค่าซับซ้อน
คู่มือนี้จะสอนวิธีใช้ PHP ของ ServBay เครื่องมือ Composer และบริการฐานข้อมูล เพื่อสร้างและรันโปรเจกต์ Yii 2 แบบ basic ครอบคลุมการตั้งค่าเว็บไซต์เพื่อทดสอบและสาธิตฟีเจอร์เบื้องต้นผ่านเครื่องมือของ ServBay
ข้อกำหนดเบื้องต้น
ก่อนเริ่ม กรุณาตรวจสอบให้แน่ใจว่าคุณได้:
- ติดตั้งและรัน ServBay บน macOS เรียบร้อยแล้ว
- ติดตั้งและเปิดใช้ PHP เวอร์ชันที่ต้องการ (เช่น PHP 8.3 หรือใหม่กว่า) ใน ServBay
- ติดตั้งและเปิดใช้ฐานข้อมูล (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ใช้ Composer สร้างโปรเจกต์ Yii 2: ภายในไดเรกทอรี
servbay-yii2-app
รันคำสั่งด้านล่างเพื่อดึง Yii 2 application template และ dependency ทั้งหมดbashcomposer create-project --prefer-dist yiisoft/yii2-app-basic .
1คำสั่งนี้จะดาวน์โหลด Yii 2 ชุด basic app และ dependency ทั้งหมดเข้าสู่โฟลเดอร์ปัจจุบัน (
.
) โปรดรอให้ Composer ทำงานจนเสร็จเข้าไดเรกทอรีโปรเจกต์: ยืนยันว่าโฟลเดอร์ทำงานปัจจุบันคือรากโปรเจกต์
/Applications/ServBay/www/servbay-yii2-app
เพราะคำสั่งอื่น ๆ จะรันจากตรงนี้bashcd /Applications/ServBay/www/servbay-yii2-app
1
ตั้งค่าขั้นต้น
หลังสร้างโปรเจกต์ Yii 2 แล้ว ต้องตั้งค่าพื้นฐาน โดยเฉพาะส่วนฐานข้อมูลและ component ต่าง ๆ
ตั้งค่าการเชื่อมต่อฐานข้อมูล:
แก้ไฟล์config/db.php
ในรากโปรเจกต์ ตั้งค่าตามฐานข้อมูลที่คุณเปิดใช้ใน ServBay (MySQL หรือ PostgreSQL) และ credential ที่กำหนดไว้ (ค่าดีฟอลต์ user มักจะเป็นroot
, password เป็นpassword
เว้นแต่มีการแก้ไข)เริ่มต้น คุณควรสร้างฐานข้อมูลใหม่ เช่น ใช้ชื่อ
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', // ชื่อฐานข้อมูล 'username' => 'root', // ชื่อผู้ใช้ DB 'password' => 'password', // รหัสผ่าน DB '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', // ชื่อฐานข้อมูล, port 5432 'username' => 'root', // ชื่อผู้ใช้ DB 'password' => 'password', // รหัสผ่าน DB 'charset' => 'utf8', 'schemaMap' => [ 'pgsql' => [ 'class' => 'yii\pgsql\Schema', 'defaultSchema' => 'public', // PostgreSQL schema ดีฟอลต์ ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15เลือกและแก้ไฟล์
config/db.php
ให้ตรงกับฐานข้อมูลและข้อมูลล็อกอินของคุณตั้งค่าแคชและ Redis: แก้ไฟล์
config/web.php
ในโปรเจกต์ กำหนด Sectioncomponents
ให้ config Memcached และ Redis ได้ตามนี้ (Memcached port11211
, Redis port6379
บน ServBay)php<?php // ... ส่วนตั้งค่าอื่น 'components' => [ // ... การตั้งค่า component อื่น (เช่น 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 ], // ... component อื่น ๆ ], // ... ส่วนตั้งค่าอื่น
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 จะติดตั้ง dependency พื้นฐานให้เมื่อตั้งโปรเจกต์ใหม่ แต่ถ้ายังไม่ได้ ให้สั่งcomposer require yiisoft/yii2-redis
เพิ่ม) ส่วน Memcached ใช้yiisoft/yii2-memcached
ซึ่งใน template พื้นฐานมักจะรวมไว้แล้ว
ตั้งค่าเว็บเซิร์ฟเวอร์ (เว็บไซต์ใน ServBay)
ใช้ฟีเจอร์ "เว็บไซต์" ของ ServBay สำหรับกำหนดเว็บเซิร์ฟเวอร์ (Caddy หรือ Nginx) ให้ชี้ไปยังโปรเจกต์ Yii 2 ของคุณ
- เปิดแอป ServBay: รันแอป ServBay
- เข้าสู่การตั้งค่าเว็บไซต์: ในหน้าแอป ให้หาและกดเมนู "เว็บไซต์" (หรือชื่อคล้าย ๆ กัน)
- เพิ่มเว็บไซต์ใหม่: กดปุ่มเพิ่มเว็บไซต์ (
+
หรือเพิ่ม
) - กรอกข้อมูลเว็บไซต์:
- ชื่อ: ตั้งชื่อให้ง่ายต่อการจดจำ เช่น
My First Yii 2 Dev Site
- โดเมน: กรอก Local Domain ที่จะใช้เข้าผ่านเบราว์เซอร์ เช่น
servbay-yii2-test.local
(ServBay จะผูก DNS ให้ชี้ไป 127.0.0.1 อัตโนมัติ) - ประเภทเว็บไซต์: เลือก
PHP
- เวอร์ชัน PHP: เลือกเวอร์ชันที่ต้องการ (เช่น
8.3
) และตรวจสอบว่าติดตั้ง/เปิดใช้แล้ว - รากเว็บไซต์ (Web root): สำคัญมาก! โครงสร้าง Template Yii 2 basic application จุดเริ่มต้น (entry point) คือ
web
ดังนั้นควรตั้งWeb root
เป็น/Applications/ServBay/www/servbay-yii2-app/web
- ชื่อ: ตั้งชื่อให้ง่ายต่อการจดจำ เช่น
- บันทึกและใช้การตั้งค่า: กดบันทึก (ServBay จะ reload การตั้งค่าเว็บเซิร์ฟเวอร์ให้โดยอัตโนมัติ)
สามารถดูรายละเอียดเพิ่มเติมได้ในคู่มือทางการของ ServBay: การเพิ่มเว็บไซต์แรก
ServBay จะออกใบรับรอง SSL และตั้ง Trust ให้ domain development ของคุณโดยอัตโนมัติ (ผ่าน ServBay User CA หรือ Public CA) คุณจึงสามารถเข้าผ่าน HTTPS ได้อย่างปลอดภัย
เพิ่มโค้ดตัวอย่างสำหรับสาธิตการใช้งาน
เพื่อทดลองใช้ฐานข้อมูลและแคช เพิ่ม action สาธิตใน SiteController
แก้ไขไฟล์ controllers/SiteController.php
เพิ่ม method ต่อไปนี้ในคลาส SiteController
:
php
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
use yii\db\Exception as DbException; // นำเข้าคลาส Exception สำหรับ DB
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");
}
}
/**
* สาธิตการเพิ่มผู้ใช้ลงฐานข้อมูล
* สมมติว่ามี table 'users' แล้ว
*
* @return Response
*/
public function actionMysqlAdd() // ใช้กับ PostgreSQL ได้เช่นกันหาก config ถูกต้อง
{
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() . " โปรดตรวจสอบบริการ DB การตั้งค่า และตาราง 'users'");
}
}
/**
* สาธิตการอ่านผู้ใช้จากฐานข้อมูล
* สมมติว่ามี table 'users' แล้ว
*
* @return Response
*/
public function actionMysql() // ใช้กับ PostgreSQL ได้เช่นกันหาก config ถูกต้อง
{
try {
$users = Yii::$app->db->createCommand('SELECT id, name, email FROM users')->queryAll();
// จัดรูปแบบ output เพื่อหลีกเลี่ยงการแสดงข้อมูลอ่อนไหวหรือ format ผิดปกติ
$output = "รายชื่อผู้ใช้ที่ดึงข้อมูลมา:\n";
foreach ($users as $user) {
$output .= "- ID: {$user['id']}, ชื่อ: {$user['name']}, อีเมล: {$user['email']}\n";
}
return $this->asText($output);
} catch (DbException $e) {
return $this->asText("ไม่สามารถดึงข้อมูลผู้ใช้จากฐานข้อมูล ข้อผิดพลาด: " . $e->getMessage() . " โปรดตรวจสอบบริการ DB การตั้งค่า และตาราง 'users'");
}
}
// ถ้าใช้ PostgreSQL อาจเพิ่ม action แยกต่างหากแต่ปกติใช้ db component ตัวเดียวกันได้
// 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
สังเกตว่าใน actionMysqlAdd
กับ actionMysql
มีการจัดการ error และปรับรูปแบบผลลัพธ์ให้ชัดเจนกว่าเดิม รวมถึงใช้ข้อมูลตัวอย่างตามมาตรฐานแบรนด์ 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 = 'My Yii2 Application on 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>
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
เพิ่มลิงก์สำหรับทดสอบ เมธอด demo ใหม่ที่เพิ่มไว้
ฐานข้อมูลเชิงสัมพันธ์: การสร้างตาราง (Migration)
หากต้องการใช้ฟีเจอร์ฐานข้อมูล (actionMysqlAdd
, actionMysql
) ให้สร้างตาราง users
ในฐานข้อมูล โดย Yii แนะนำให้ทำ migration
สร้างไฟล์ migration ด้วย Gii tool: เปิดเทอร์มินัล ในโฟลเดอร์โปรเจกต์
/Applications/ServBay/www/servbay-yii2-app
รันคำสั่งนี้bashphp yii migrate/create create_users_table
1ตอบ
yes
เมื่อระบบถาม จะได้ไฟล์ migration ในmigrations
เช่นmYYYYMMDD_HHMMSS_create_users_table.php
แก้ไฟล์ migration: เปิดไฟล์ที่สร้างเมื่อสักครู่ แก้ไข method
up()
เพื่อกำหนดโครงสร้างตารางusers
php<?php use yii\db\Migration; /** * Handles the creation of table `{{%users}}`. */ class mXXXXXXXXXXXXXX_create_users_table extends Migration // XXXXXXXXXXXXXX คือ timestamp { /** * {@inheritdoc} */ public function up() { $this->createTable('{{%users}}', [ // ใช้ {{%users}} รองรับ table prefix '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'), ]); // เสริม: สร้าง Index เพื่อความเร็วในการค้นหา $this->createIndex( 'idx-users-email', '{{%users}}', 'email', true // true หมายถึง unique index ); } /** * {@inheritdoc} */ public function down() { // ลบ index $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อย่าลืมเปลี่ยนชื่อ class เป็นชื่อที่ตรงกับไฟล์
รัน migration: ยังคงอยู่ในโฟลเดอร์โปรเจกต์ รันคำสั่งนี้เพื่อสร้างตารางจาก migration ที่นิยามไว้
bashphp yii migrate
1ตอบ
yes
เมื่อถูกถาม หากทุกอย่างถูกต้องจะเห็นข้อความสร้างตารางเสร็จสมบูรณ์
ทดสอบเข้าถึงเว็บไซต์
ขณะนี้ คุณสามารถเปิดเบราว์เซอร์เพื่อเข้าเว็บไซต์ https://servbay-yii2-test.local
- เข้า
https://servbay-yii2-test.local
จะเห็นหน้า Welcome ของ Yii 2 และลิงก์สาธิตเพิ่มใหม่ในหน้า index - คลิก "ทดสอบ 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
: หากฐานข้อมูลพร้อม ตรงกับ config และมีตารางusers
จะเห็นข้อความสำเร็จ ทุกครั้งที่คลิกจะพยายามเพิ่มแถวใหม่ (เว้นแต่ email ตั้ง unique แล้วมีข้อมูลเดิมซ้ำ) - คลิก "อ่านผู้ใช้จากฐานข้อมูล" หรือ
https://servbay-yii2-test.local/index.php?r=site/mysql
: หาก DB พร้อมและมีตารางอยู่ จะเห็นผลลัพธ์ผู้ใช้ที่ถูกดึงมาอย่างเป็นระเบียบ
หากเกิดปัญหา ตรวจสอบบริการที่เกี่ยวข้อง (PHP, เว็บเซิร์ฟเวอร์, DB, Memcached, Redis) ใน ServBay ว่าเปิดทำงานแล้ว และไฟล์ config ของ Yii 2 (config/db.php
, config/web.php
) ถูกกำหนดถูกต้อง ทั้งนี้ต้องแน่ใจว่าตาราง DB ถูกสร้างจาก migration แล้ว
คำถามที่พบบ่อย (FAQ)
- เปิดโดเมนแล้วเข้าเว็บไม่ได้/แจ้ง error SSL? ตรวจสอบว่าคุณเพิ่ม domain ถูกต้องในฟีเจอร์ "เว็บไซต์" ของ ServBay และแอป ServBay ทำงานอยู่ ServBay ตั้งค่า DNS และใบ certificate ให้เอง หากยัง error อาจต้อง "Trust" ServBay CA ที่เครื่อง
- รัน Composer แล้วขึ้น error? ตรวจสอบว่าสั่งงานจากเทอร์มินัลบน macOS และเปิดใช้ Composer ใน ServBay แล้ว ปกติ PATH จะถูกตั้งอัตโนมัติ
- เชื่อมต่อฐานข้อมูลไม่ได้? เช็คบริการฐานข้อมูลใน ServBay ว่ารันอยู่ ตรวจสอบ
dsn
,username
,password
ในconfig/db.php
ว่าตรงกับจริงไหม และต้องสร้าง databaseservbay_yii2_app
แล้ว อาจเช็คผ่าน Adminer ได้เช่นกัน - Memcached/Redis เชื่อมต่อไม่ได้? ตรวจสอบบริการว่าทำงานใน ServBay แล้ว ตรวจสอบ host และ port ที่ตั้งค่าใน
config/web.php
ว่าตรงกับดีฟอลต์ (127.0.0.1
และ port ที่เกี่ยวข้อง) หรือไม่ - Migration (
php yii migrate
) ไม่ผ่าน? ตรวจสอบ config ฐานข้อมูล ว่ากำหนดถูกต้องแล้ว และบริการฐานข้อมูลเปิดใช้งาน และมีฐานservbay_yii2_app
- actionMysqlAdd หรือ actionMysql แจ้งหา table ไม่เจอ? ต้องรัน migration ด้วยคำสั่ง
php yii migrate
สร้างตารางก่อนใช้งาน - ดู log error PHP ได้ที่ไหน? ServBay รวม log หลายประเภทไว้ในหน้า "Log" ภายในแอป ซึ่งช่วยให้วินิจฉัยปัญหาได้ง่าย
สรุป
ด้วย ServBay คุณสามารถจัดเตรียมสภาพแวดล้อมพัฒนา Yii 2 ที่ครบถ้วนบน macOS ได้อย่างง่ายดาย เครื่องมือ Composer, PHP หลายเวอร์ชัน, บริการฐานข้อมูล/แคช และฟีเจอร์การตั้งค่าเว็บไซต์ในตัว ทำให้การเริ่มโปรเจกต์ Yii 2 ง่ายและรวดเร็ว ทำตามคู่มือนี้ คุณจะพร้อมสำหรับการพัฒนาและสามารถใช้เครื่องมือต่าง ๆ ใน ServBay เพื่อเพิ่มประสิทธิภาพการทำงานได้ทันที
ขอให้สนุกกับการพัฒนา!