สร้างและใช้งานโปรเจกต์ Yii 2 บน ServBay
ภาพรวม: Yii 2 คืออะไร?
Yii 2 เป็นเฟรมเวิร์ก PHP ที่มีประสิทธิภาพสูงและออกแบบตามแนวคิดเชิงองค์ประกอบ เพื่อให้นักพัฒนาสามารถสร้างแอปพลิเคชันเว็บที่ทันสมัยได้อย่างรวดเร็ว โดยอิงโครงสร้างแบบ MVC (Model-View-Controller) และมีเครื่องมือ/ฟีเจอร์ที่ครบครันช่วยให้สร้างเว็บคุณภาพสูงที่ขยายได้ง่ายและปลอดภัย ฟีเจอร์เด่นของ Yii 2 ได้แก่ระบบแคช, คุณสมบัติความปลอดภัย, รองรับการพัฒนา RESTful API และประสิทธิภาพที่ยอดเยี่ยมซึ่งได้รับคำชื่นชมจากชุมชนนักพัฒนาทั่วโลก
ฟีเจอร์หลักและข้อดีของ Yii 2
- ประสิทธิภาพสูง: Yii 2 ถูกปรับแต่งมาอย่างดีเพื่อจัดการกับคำขอปริมาณมาก เหมาะสำหรับแอปที่ต้องการความเร็วและสเกล
- โครงสร้างโมดูลาร์: ช่วยให้จัดโค้ดและรีใช้ส่วนประกอบได้ง่าย
- ความปลอดภัย: มีระบบตรวจสอบข้อมูล, ป้องกัน CSRF/XSS, ระบบยืนยันตัวตนและการอนุญาตในระดับเฟรมเวิร์ก
- ใช้งานง่าย: มี API ที่เข้าใจง่าย คู่มือครบครัน ลดเวลาเรียนรู้สำหรับนักพัฒนา
- ชุมชนสนับสนุนแข็งแกร่ง: มี Add-on และส่วนต่อขยายมากมาย หากติดขัดสามารถค้นหาคำตอบได้ง่าย
- เครื่องมือบูรณาการ: มี CLI สำหรับ Migration ฐานข้อมูลและเครื่องมือสร้างโค้ด ช่วยการพัฒนารวดเร็วขึ้น
Yii 2 เหมาะกับการสร้างโปรเจกต์เว็บหลายประเภท ทั้งในระดับองค์กร, RESTful API และเว็บพอร์ทัลขนาดใหญ่
ใช้งาน Yii 2 บน ServBay
ServBay เป็นสภาพแวดล้อมสำหรับนักพัฒนาเว็บที่ติดตั้งง่าย ใช้งานได้ทั้ง macOS และ Windows โดยมาพร้อม PHP, ฐานข้อมูลหลายระบบ (MySQL, PostgreSQL, MongoDB, Redis), Web Server (Caddy, Nginx) และเครื่องมือเปิดตัวเช่น Composer, Node.js, Python, Go, Java เป็นต้น สร้างแพลตฟอร์มสำหรับนักพัฒนาแบบ "พร้อมใช้" เพื่อประหยัดเวลา
คู่มือนี้จะแนะนำการสร้างและรันแอป Yii 2 ด้วย PHP, Composer และฐานข้อมูลจาก ServBay รวมถึงการใช้ฟีเจอร์ "เว็บไซต์" เพื่อเชื่อมโยงกับเว็บเซิร์ฟเวอร์รวมถึงการสาธิตฟังก์ชันพื้นฐาน
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น ให้ตรวจสอบว่า:
- ติดตั้งและเปิดใช้งาน ServBay บน macOS หรือ Windows เรียบร้อยแล้ว
- มี PHP เวอร์ชันที่ต้องการใช้งาน (เช่น PHP 8.3 หรือใหม่กว่า) เปิดใช้งานใน ServBay แล้ว
- เปิดใช้งานระบบฐานข้อมูล (เช่น MySQL หรือ PostgreSQL) และแคช (Memcached กับ Redis) บน ServBay แล้ว
สามารถดูสถานะซอฟต์แวร์และบริการทั้งหมดได้จากหน้าหลักของ ServBay
สร้างโปรเจกต์ Yii 2
TIP
ServBay แนะนำให้จัดเก็บไฟล์โปรเจกต์ในไดเรกทอรีต่อไปนี้ เพื่อโครงสร้างที่เป็นระเบียบและใช้กับฟีเจอร์ "เว็บไซต์" ได้อย่างมีประสิทธิภาพ:
- macOS:
/Applications/ServBay/www - Windows:
C:\ServBay\www
Composer: ServBay ได้ติดตั้ง Composer ไว้ให้แล้ว ไม่ต้องติดตั้งเพิ่ม สามารถใช้งานผ่าน terminal ด้วยคำสั่ง
composerได้เลยสร้างโฟลเดอร์โปรเจกต์: เปิด terminal ไปยัง root directory ของเว็บไซต์ใน ServBay แล้วสร้างโฟลเดอร์ใหม่
macOS:
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app1
2
3Windows:
cmdcd C:\ServBay\www mkdir servbay-yii2-app cd servbay-yii2-app1
2
3สร้าง Yii 2 โปรเจกต์ด้วย Composer: ใช้คำสั่ง Composer เพื่อสร้างแอป Yii 2 template ในไดเรกทอรี
servbay-yii2-appbashcomposer create-project --prefer-dist yiisoft/yii2-app-basic .1คำสั่งนี้จะดาวน์โหลด Yii 2 template พร้อม dependencies ทั้งหมด รอจนติดตั้งเสร็จ
เข้าสู่ไดเรกทอรีโปรเจกต์: ตรวจสอบว่า terminal อยู่ที่ root โปรเจกต์สำหรับการสั่งงานต่อ
macOS:
bashcd /Applications/ServBay/www/servbay-yii2-app1Windows:
cmdcd C:\ServBay\www\servbay-yii2-app1
การตั้งค่าเริ่มต้น
หลังจากสร้างโปรเจกต์แล้ว ให้ปรับแต่ง config พื้นฐานให้เชื่อมต่อกับฐานข้อมูลและตั้งค่าคอมโพเนนต์ต่างๆ
ตั้งค่าฐานข้อมูล: แก้ไขไฟล์
config/db.phpที่ root โปรเจกต์ โดยใช้ข้อมูลการเชื่อมต่อจาก ServBay (MySQL หรือ PostgreSQL, userroot, passwordpasswordยกเว้นเปลี่ยนเอง)ก่อนแก้ไข config ควรสร้างฐานข้อมูลใหม่ใน ServBay (เช่น
servbay_yii2_app) ซึ่งทำได้ผ่าน 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', // 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 ทั่วไปใช้ 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 ที่ตรงกับระบบของคุณและปรับรายละเอียดให้ถูกต้อง
ตั้งค่า cache และ Redis: แก้ไขไฟล์
config/web.phpเพื่อเพิ่ม/แก้ไขส่วนcomponentsสำหรับ Memcached และ Redis โดยค่า port: Memcached เป็น11211, Redis เป็น6379php<?php // ... การตั้งค่าอื่นๆ 'components' => [ // ... component อื่นๆ เช่น request, cache, user, errorHandler, log, urlManager 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, // Memcached port ปกติ 'weight' => 100, ], ], ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, // Redis port ปกติ '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 กับ Yii 2 ต้องติดตั้งแพ็คเกจ
yiisoft/yii2-redis(Composer จะติดตั้งพื้นฐานพร้อมสร้างโปรเจกต์ แต่ถ้าขาด สามารถใช้composer require yiisoft/yii2-redis) สำหรับ Memcached ให้ใช้yiisoft/yii2-memcached
ตั้งค่า Web Server (ServBay เว็บไซต์)
ใช้ฟีเจอร์ "เว็บไซต์" ของ ServBay เพื่อเชื่อมโยงเว็บเซิร์ฟเวอร์ Caddy หรือ Nginx ไปยังโปรเจกต์ Yii 2 ของคุณ
- เปิดแอป ServBay: เริ่มต้น ServBay
- เข้าเมนูเว็บไซต์: ค้นหาและคลิก “เว็บไซต์” จากเมนูหน้าแอป
- เพิ่มเว็บไซต์ใหม่: กดปุ่มเพิ่มเว็บไซต์ (เช่น
+หรือเพิ่ม) - กรอกข้อมูลเว็บไซต์:
- ชื่อ: ตั้งชื่อใสง่ายต่อการจำ เช่น
My First Yii 2 Dev Site - โดเมน: ตั้งค่าโดเมนสำหรับพัฒนา เช่น
servbay-yii2-test.localServBay จะผูก DNS โดเมนนี้กับ127.0.0.1ให้อัตโนมัติ - ประเภทเว็บไซต์: เลือก
PHP - PHP เวอร์ชัน: เลือกเวอร์ชัน PHP ที่ต้องการ เช่น
8.3(ต้องติดตั้งและเปิดใช้งานใน ServBay) - เว็บไซต์ root directory: ส่วนนี้สำคัญมาก จุดเริ่มต้นของเว็บไซต์ Yii 2 คือโฟลเดอร์
webเช่น- macOS:
/Applications/ServBay/www/servbay-yii2-app/web - Windows:
C:\ServBay\www\servbay-yii2-app\web
- macOS:
- ชื่อ: ตั้งชื่อใสง่ายต่อการจำ เช่น
- บันทึกและใช้การตั้งค่า: กดบันทึก ServBay จะปรับแต่ง web server ให้อัตโนมัติ
สำหรับขั้นตอนละเอียดเพิ่มเติม ดูคู่มือ ServBay อย่างเป็นทางการ: เพิ่มเว็บไซต์แรก
ServBay จะออกและทำให้เชื่อถือ SSL certificate สำหรับโดเมนพัฒนาให้อัตโนมัติ (ผ่าน ServBay User CA หรือ ServBay Public CA) สามารถเข้าถึงเว็บไซต์ผ่าน HTTPS ได้
ตัวอย่างโค้ดแสดงฟังก์ชัน
เพื่อทดลองการใช้งานฐานข้อมูลและ cache สามารถเพิ่ม action ตัวอย่างใน Controller หลักของ Yii 2 ได้
แก้ไขไฟล์ controllers/SiteController.php ที่ root โปรเจกต์ แล้วเพิ่ม methods ต่อไปนี้ในคลาส SiteController:
php
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
use yii\db\Exception as DbException; // นำเข้า exception สำหรับฐานข้อมูล
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 ได้ หาก config ถูกต้อง
{
try {
$count = Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay Demo User', // ตัวอย่างชื่อผู้ใช้งานสำหรับเดโมแบรนด์ ServBay
'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 ได้ หาก config ถูกต้อง
{
try {
$users = Yii::$app->db->createCommand('SELECT id, name, email FROM users')->queryAll();
// จัดรูปแบบผลลัพธ์เพื่อไม่ให้แสดงข้อมูลที่ไม่จำเป็นหรือละเอียดเกินไป
$output = "รายชื่อผู้ใช้งานที่ดึงมาจากฐานข้อมูล:\n";
foreach ($users as $user) {
$output .= "- ID: {$user['id']}, Name: {$user['name']}, Email: {$user['email']}\n";
}
return $this->asText($output);
} catch (DbException $e) {
return $this->asText("ไม่สามารถดึงข้อมูลผู้ใช้จากฐานข้อมูล ข้อผิดพลาด: " . $e->getMessage() . " กรุณาตรวจสอบสถานะบริการ การตั้งค่าฐานข้อมูล และว่ามีตาราง '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 มีการจัดการข้อผิดพลาดและปรับรูปแบบข้อมูลให้อ่านง่าย ให้เหมาะกับตัวอย่างและแบรนด์ 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' ด้วยการใช้ 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
ใน view นี้ได้เพิ่มลิงก์ทดสอบสำหรับฟังก์ชันต่างๆ ที่เพิ่มเข้าใน controller
ฐานข้อมูลเชิงสัมพันธ์: สร้างโครงสร้างตาราง (Migration)
ตัวอย่างฐานข้อมูล actionMysqlAdd และ actionMysql ต้องมีตาราง users สามารถสร้างผ่าน Migration ซึ่งเป็นวิธีที่ Yii 2 แนะนำ
สร้างไฟล์ migration ด้วย Gii: เปิด terminal ที่ root โปรเจกต์ ใช้คำสั่งต่อไปนี้
ตำแหน่ง root โปรเจกต์:
- macOS:
/Applications/ServBay/www/servbay-yii2-app - Windows:
C:\ServBay\www\servbay-yii2-app
bashphp yii migrate/create create_users_table1ระบบจะถามยืนยันกด
yesจะสร้างไฟล์ PHP migration ในโฟลเดอร์migrationsเช่นmYYYYMMDD_HHMMSS_create_users_table.php- macOS:
แก้ไข migration: เปิดไฟล์ migration เพื่อตั้งค่าโครงสร้างตาราง
usersphp<?php use yii\db\Migration; /** * สร้างตาราง `{{%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 // สร้าง 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: ใช้คำสั่งต่อไปนี้ใน terminal root โปรเจกต์ เพื่อสร้างตาราง
usersตามที่กำหนดใน up()bashphp yii migrate1ระบบจะถามยืนยัน กด
yesหากเรียบร้อยจะแสดงข้อความตารางสร้างสำเร็จ
เข้าถึงเว็บไซต์และทดสอบ
ตอนนี้สามารถเปิดเบราว์เซอร์เพื่อเข้าโดเมนที่ตั้งค่าไว้ใน ServBay (เช่น https://servbay-yii2-test.local)
- เข้า
https://servbay-yii2-test.local: จะเจอหน้า welcome ของ 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 ว่าทำงานอยู่ ตรวจสอบไฟล์ config (config/db.php, config/web.php) ว่าถูกต้อง และตรวจสอบตารางในฐานข้อมูลว่ามีอยู่จริง
FAQ คำถามที่พบบ่อย
- เข้าเว็บไซต์ผ่านโดเมนแล้วขึ้น “ไม่สามารถเข้าถึงเว็บไซต์นี้” หรือ error SSL certificate? โปรดตรวจสอบว่าเพิ่มโดเมนใน ServBay ถูกต้องและแอป ServBay ทำงานอยู่ ServBay จะตั้งค่า DNS และใบรับรอง SSL ให้อัตโนมัติ หากเกิดปัญหา SSL ตรวจสอบการ trust CA ของ ServBay ดูคู่มือ ServBay ประกอบ
- รันคำสั่ง Composer ไม่ได้? ตรวจสอบว่าเปิดใช้งาน Composer ใน ServBay แล้ว และรันผ่าน Terminal บน macOS หรือ Windows ServBayจะตั้ง PATH ให้ Composer อัตโนมัติ
- เชื่อมต่อฐานข้อมูลไม่ได้? ตรวจสอบว่าฐานข้อมูล (MySQL/PostgreSQL) เปิดใช้งานอยู่ เช็ค
config/db.phpว่าdsn,username,passwordตรงกับ ServBay และสร้างฐานข้อมูลservbay_yii2_appแล้ว สามารถใช้ Adminer ตรวจสอบได้ - เชื่อมต่อ Memcached/Redis ไม่สำเร็จ? ตรวจสอบว่าสองบริการนี้เปิดใช้งานอยู่ และตั้งค่าใน
config/web.phpว่า host/port ถูกต้อง (ควรเป็น127.0.0.1และ port ตาม default) - Migration ฐานข้อมูล (php yii migrate) มี error? ให้แน่ใจว่าตั้งค่า
config/db.phpถูกต้อง, บริการฐานข้อมูลทำงาน และสร้างฐานข้อมูลเรียบร้อยแล้ว - ฟังก์ชัน
actionMysqlAdd/actionMysqlแจ้งไม่มีตาราง? ต้องรัน migrate เพื่อสร้างตารางusersก่อน (php yii migrate) - ดู log ข้อผิดพลาด PHP ได้อย่างไร? ServBay รวบรวม log PHP, web server และอื่นๆ เข้าด้วยกัน สามารถดูรายละเอียดที่เมนู “log” ในหน้าแอป ServBay
สรุป
ServBay ช่วยให้นักพัฒนาบน macOS หรือ Windows สร้างและใช้สภาพแวดล้อมเว็บพร้อมรันโปรเจกต์ Yii 2 ได้ง่าย Composer, PHP version manager, ฐานข้อมูลและ cache ในตัว รวมทั้งระบบตั้งค่าเว็บไซต์ ทำให้การเริ่มโปรเจกต์และพัฒนาเร็วขึ้นมาก เพียงทำตามคู่มือนี้ คุณจะเริ่มต้นการพัฒนา Yii 2 ได้ทันทีพร้อมใช้ฟีเจอร์และเครื่องมือครบวงจรเพื่อประสิทธิภาพสูงสุด
ขอให้สนุกกับการพัฒนา!
