การสร้างและรันโปรเจกต์ Symfony
ServBay คือเครื่องมือสภาพแวดล้อมการพัฒนา Web บนเครื่อง macOS ซึ่งออกแบบมาโดยเฉพาะสำหรับนักพัฒนา โดยได้รวม Runtime สำหรับหลายภาษา (PHP, Node.js, Python, Go, Java ฯลฯ) และบริการฐานข้อมูลต่าง ๆ (MySQL, PostgreSQL, MongoDB, Redis ฯลฯ) รวมถึงรองรับ Apache และ Caddy Web Server คู่มือนี้จะอธิบายอย่างละเอียดถึงวิธีใช้ ServBay บน macOS เพื่อสร้างและรันโปรเจกต์ Symfony อย่างรวดเร็ว
Symfony คืออะไร?
Symfony คือเฟรมเวิร์ค PHP โอเพนซอร์สที่พัฒนาโดย SensioLabs เพื่อให้นักพัฒนาสามารถสร้าง Web Application และ API สมัยใหม่ได้อย่างมีประสิทธิภาพและยืดหยุ่น มีการออกแบบตามแนวปฏิบัติมาตรฐานของการพัฒนา Web พร้อมด้วยชุดเครื่องมือที่ครบครัน เช่น Routing, Template Engine (Twig), การจัดการฟอร์ม, การยืนยันตัวตน, Dependency Injection และอื่น ๆ อีกมากมาย ซึ่งช่วยให้การพัฒนา Web ง่ายขึ้น
จุดเด่นและข้อดีของ Symfony
- การออกแบบแบบโมดูลาร์: Symfony มีคลัง Component ที่สามารถนำกลับมาใช้ใหม่ นักพัฒนาสามารถเลือกใช้เฉพาะที่ต้องการตามขนาดโปรเจกต์ได้อย่างยืดหยุ่น
- ประสิทธิภาพสูง: ด้วยสถาปัตยกรรมที่ปรับแต่งมาอย่างดี ระบบแคชที่มีประสิทธิภาพ และการรองรับฟีเจอร์ PHP ล่าสุด Symfony จึงให้ประสบการณ์ใช้งานที่รวดเร็ว
- ชุมชนที่แข็งแกร่ง: ด้วยนักพัฒนาจำนวนมาก, Bundle (ปลั๊กอิน) ของบุคคลที่สามมากมาย และเอกสารครบถ้วน จึงหาคำตอบและโซลูชันได้ง่ายเมื่อติดปัญหา
- ยืดหยุ่นต่อการต่อขยาย: สามารถผสานกับไลบรารีหรือปลั๊กอินอื่น ๆ ได้ง่าย เหมาะกับโปรเจกต์หลากหลายรูปแบบและความซับซ้อน
- เสถียรภาพและดูแลรักษาง่าย: ด้วยแนวทางเขียนโค้ดที่ดีและออกแบบตาม Design Pattern ที่เหมาะสม ทำให้ง่ายต่อการทดสอบ ดูแล และต่อยอดในอนาคต
Symfony เหมาะสำหรับการสร้าง Web Application ทุกรูปแบบ ตั้งแต่ API ขนาดเล็กไปจนถึงระบบองค์กรขนาดใหญ่
การสร้างและรันโปรเจกต์ Symfony ด้วย ServBay
ServBay จัดเตรียมสภาพแวดล้อมครบสำหรับการรันโปรเจกต์ Symfony ประกอบด้วย PHP รุ่นที่เหมาะสม, Composer, Web Server และบริการฐานข้อมูล/แคช ต่าง ๆ ในส่วนนี้จะเป็นคู่มือสำหรับสร้างและตั้งค่าโปรเจกต์ Symfony ใหม่บน ServBay
เงื่อนไขเบื้องต้น
ก่อนเริ่มต้น กรุณาตรวจสอบให้มั่นใจว่าคุณ:
- ติดตั้ง ServBay แล้ว: ได้ติดตั้งและเปิดใช้งาน ServBay บน macOS เรียบร้อย หากยังไม่ได้ติดตั้ง ดูวิธีที่ คู่มือติดตั้ง ServBay
- ServBay ทำงานปกติ: บริการหลัก (เช่น Caddy หรือ Apache รวมถึงฐานข้อมูลที่คุณต้องการใช้) กำลังรันอยู่
- พื้นฐานความเข้าใจ: มีความรู้พื้นฐานเกี่ยวกับ PHP, Composer และแนวคิดของ Symfony
การสร้างโปรเจกต์ Symfony
ขอแนะนำให้เก็บโปรเจกต์เว็บไซต์ไว้ที่โฟลเดอร์ /Applications/ServBay/www
เพื่อให้ ServBay สามารถตรวจสอบและจัดการโปรเจกต์ของคุณได้อย่างสะดวก
ตรวจสอบ Composer พร้อมใช้งาน
ServBay ได้ติดตั้ง Composer ไว้แล้วและตั้ง Path ไว้เรียบร้อย คุณไม่จำเป็นต้องติดตั้งเพิ่ม สามารถตรวจสอบได้โดยรัน
composer --version
ใน Terminalสร้างโฟลเดอร์โปรเจกต์
สร้างโฟลเดอร์ใหม่สำหรับเก็บโปรเจกต์ Symfony ของคุณ ภายใต้โฟลเดอร์เว็บไซต์ที่แนะนำ
bashcd /Applications/ServBay/www mkdir servbay-symfony-app
1
2สร้างโปรเจกต์ Symfony ด้วย Composer
เข้าไปยังโฟลเดอร์ใหม่และใช้ Composer สร้างโปรเจกต์ Symfony (แบบโครงสร้าง
website-skeleton
ซึ่งเหมาะสำหรับ Web ทั่วไป)bashcd /Applications/ServBay/www/servbay-symfony-app composer create-project symfony/website-skeleton .
1
2หลังรันคำสั่งนี้ Composer จะดาวน์โหลดไฟล์หลักของ Symfony และ Dependency ต่าง ๆ ลงโฟลเดอร์ปัจจุบัน
การตั้งค่าเบื้องต้น
การตั้งค่าหลักของโปรเจกต์ Symfony มักบริหารด้วย Environment Variable ซึ่งเก็บไว้ในไฟล์ .env
ที่โฟลเดอร์หลักของโปรเจกต์
ตั้งค่า Environment Variable (
.env
)เปิดไฟล์
.env
ที่โฟลเดอร์หลัก ไฟล์นี้ใช้เก็บค่าต่าง ๆ เช่น การเชื่อมต่อฐานข้อมูล, Secret Key ของแอปพลิเคชัน ฯลฯ ให้แก้ไขหรือตั้งค่าตามที่คุณต้องการตัวอย่างการตั้งค่าที่ควรมีหรือปรับให้เข้ากับ ServBay:
dotenv# ตัวอย่าง .env APP_ENV=dev # โหมดสำหรับพัฒนา APP_SECRET=your_secret_key # เปลี่ยนเป็นสตริงสุ่มเฉพาะของคุณเพื่อความปลอดภัย # การเชื่อมต่อฐานข้อมูล (ที่นี่ใช้ MySQL เป็นตัวอย่าง, ดูอธิบายเพิ่มเติมส่วนถัดไป) # DATABASE_URL="mysql://db_user:[email protected]:3306/db_name?serverVersion=8.0&charset=utf8mb4" # DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=13&charset=utf8" # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
1
2
3
4
5
6
7
8อย่าลืมเปลี่ยน
your_secret_key
เป็นค่าสุ่มปลอดภัย สำหรับฐานข้อมูล ServBay จะตั้งค่าผู้ใช้เป็นroot
และรหัสผ่านpassword
เป็นค่าเริ่มต้น (สำหรับ Production ควรเปลี่ยนทันที) ตัวอย่างนี้จะใช้ชื่อฐานข้อมูลservbay_symfony_app
การตั้งค่าเว็บเซิร์ฟเวอร์ (ServBay เว็บไซต์)
หากต้องการเข้าถึงโปรเจกต์ Symfony ผ่าน Browser คุณต้องตั้งค่า "เว็บไซต์" ใน ServBay ให้เป็น Virtual Host โดย Web Root ของ Symfony ต้องชี้ไปที่โฟลเดอร์ public/
เข้าสู่แผงควบคุม ServBay ไปที่ตั้งค่า "เว็บไซต์" (หรือ "โฮสต์" ถ้าเป็นเวอร์ชั่นเก่า) แล้วเพิ่มเว็บไซต์ใหม่โดยใช้ข้อมูลต่อไปนี้:
- ชื่อ (Name) : ตั้งชื่อที่เข้าใจง่าย เช่น
My Symfony Dev Site
- โดเมน (Domain): กำหนดโดเมน local เช่น
servbay-symfony-test.local
ServBay จะเชื่อมและ Map ให้โดยอัตโนมัติ - ประเภทเว็บไซต์ (Website Type): เลือก
PHP
- เวอร์ชัน PHP (PHP Version): เลือก PHP เวอร์ชั่นที่เข้ากันได้กับ Symfony (แนะนำใช้เวอร์ชันล่าสุดใน ServBay เช่น
8.3
) - เว็บไซต์รูท (Website Root): สำคัญ! ต้องชี้ไปที่
public/
ของโปรเจกต์ คือ/Applications/ServBay/www/servbay-symfony-app/public
เมื่อเซฟและใช้การเปลี่ยนแปลง ServBay จะอัปเดตเว็บเซิร์ฟเวอร์โดยอัตโนมัติ (Drupal รองรับทั้ง Caddy และ Apache) และจะเซ็ต SSL ไว้ให้พร้อมสำหรับ Local Domain ทันที
ดูรายละเอียดขั้นตอนที่: เพิ่มเว็บไซต์แรกใน ServBay
เพิ่มตัวอย่างโค้ดพื้นฐาน
เพื่อตรวจสอบว่าการตั้งค่าเว็บไซต์ถูกต้องหรือไม่ ให้เพิ่ม Route และ Controller ง่าย ๆ ที่แสดงข้อความเมื่อเข้าถึง path /
ตั้งค่า Route (
config/routes.yaml
)เปิดไฟล์
config/routes.yaml
แล้วเพิ่มข้อมูลสำหรับ Route/
ที่ชี้ไปที่เมธอดindex
ของ Controlleryaml# config/routes.yaml index: path: / controller: App\Controller\DefaultController::index
1
2
3
4สร้าง Controller (
src/Controller/DefaultController.php
)สร้างไฟล์ใหม่
DefaultController.php
ในโฟลเดอร์src/Controller/
และเพิ่มโค้ดด้านล่าง:php<?php // src/Controller/DefaultController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class DefaultController { /** * @Route("/", name="index") */ public function index(): Response { // ส่งคืน HTTP Response ธรรมดา return new Response('Hello ServBay and Symfony!'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18โค้ดนี้จะสร้างคลาส
DefaultController
พร้อมเมธอดindex
ที่เชื่อมกับ path/
ด้วย Annotation และส่งข้อความ "Hello ServBay and Symfony!" เมื่อมีคนเข้าเว็บไซต์
การเข้าถึงเว็บไซต์
เปิด Browser แล้วไปที่โดเมนที่ตั้งไว้ https://servbay-symfony-test.local
ถ้าทุกอย่างถูกต้อง จะเห็นข้อความ:
Hello ServBay and Symfony!
1
ถ้าเห็นข้อความนี้ แสดงว่าโปรเจกต์ Symfony ของคุณรันผ่าน ServBay Web Server สำเร็จ ServBay จะ Config SSL ให้โดยอัตโนมัติจึงควรเข้าใช้งานผ่าน https://
ตัวอย่างการเชื่อมต่อฐานข้อมูลและระบบแคช
Symfony มักจะใช้ Doctrine ORM ในการจัดการฐานข้อมูลเชิงสัมพันธ์ และใช้ Symfony Cache จัดการระบบแคชหรือ NoSQL ServBay มีบริการฐานข้อมูลและแคชมาตรฐานครบถ้วน พร้อม PHP Extension ที่เกี่ยวข้อง คุณสามารถใช้งานต่าง ๆ ได้สะดวกใน Symfony
ตัวอย่างฐานข้อมูลเชิงสัมพันธ์ (Doctrine ORM)
ServBay รองรับ MySQL และ PostgreSQL ตัวอย่างนี้จะแสดงวิธีตั้งค่าและใช้งานทั้งสองแบบใน Symfony
ตั้งค่าการเชื่อมต่อฐานข้อมูล
แก้ไขไฟล์
.env
ที่โฟลเดอร์หลักของโปรเจกต์ เปิดคอมเมนต์และปรับค่าDATABASE_URL
ตามฐานข้อมูลที่ใช้- สำหรับ MySQL: ปกติ ServBay จะตั้ง User เป็น
root
, Password เป็นpassword
, Port3306
(ปรับตาม Config จริงของคุณ)dotenv# .env DATABASE_URL="mysql://root:[email protected]:3306/servbay_symfony_app?serverVersion=8.0&charset=utf8mb4"
1
2 - สำหรับ PostgreSQL: ปกติ User
root
, Passwordpassword
, Port5432
dotenv# .env DATABASE_URL="postgresql://root:[email protected]:5432/servbay_symfony_app?serverVersion=13&charset=utf8"
1
2
ตรวจสอบว่าฐานข้อมูลที่ต้องการเปิดใช้งานอยู่ (ใน Control Panel ของ ServBay)
- สำหรับ MySQL: ปกติ ServBay จะตั้ง User เป็น
สร้างฐานข้อมูล
ถ้ายังไม่มีฐานข้อมูล
servbay_symfony_app
ให้สร้างผ่านเครื่องมือจัดการเช่น phpMyAdmin หรือ pgAdmin (เข้าได้จาก Control Panel ของ ServBay) หรือใช้คำสั่ง Symfony สร้างผ่าน CLI ก็ได้bashphp bin/console doctrine:database:create
1สร้าง Entity และ Migration File
ปกติจะใช้ Doctrine Entity แทนตาราง ใช้ Maker Bundle ช่วยสร้าง Entity และ Migration File ได้อย่างสะดวก
- สร้าง Entity (ตัวอย่าง
User
):bashจากนั้นตอบ Prompt ต่าง ๆ เช่น fieldphp bin/console make:entity User
1name
(string),email
(string, unique=yes) - สร้าง Migration File: สร้างไฟล์ Migration ตามที่เปลี่ยนแปลงใน Entity:bashจะได้ไฟล์ Migration ใหม่ใน
php bin/console make:migration
1src/Migrations
พร้อม SQL สำหรับสร้างตารางusers
- สร้าง Entity (ตัวอย่าง
รัน Migration
ใช้ Migration Command อัปเดตโครงสร้างฐานข้อมูล
bashphp bin/console doctrine:migrations:migrate
1เพิ่มตัวอย่างการใช้งานฐานข้อมูล
แก้ไข
src/Controller/DefaultController.php
เพิ่ม Route และเมธอดใช้งาน Doctrine (เพิ่ม-ดึงข้อมูล User) โดยใช้EntityManagerInterface
เริ่มจากประกาศ
EntityManagerInterface
ใน Constructor:php<?php // src/Controller/DefaultController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Doctrine\ORM\EntityManagerInterface; // Import EntityManagerInterface use App\Entity\User; // Import User Entity use Symfony\Component\HttpFoundation\JsonResponse; // For JSON response class DefaultController { private $entityManager; // Inject EntityManagerInterface via Constructor public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } /** * @Route("/", name="app_index") */ public function index(): Response { return new Response('Hello ServBay and Symfony!'); } // ... methods อื่น ๆ ... }
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จากนั้นเพิ่ม Route ใน
config/routes.yaml
:yaml# config/routes.yaml # ... อื่น ๆ ... mysql_add_user: path: /mysql-add-user # หรือ /pgsql-add-user ถ้าใช้ PostgreSQL controller: App\Controller\DefaultController::addUser mysql_get_users: path: /mysql-users # หรือ /pgsql-users controller: App\Controller\DefaultController::getUsers
1
2
3
4
5
6
7
8เพิ่มเมธอดสำหรับเพิ่มและดึง User ใน Controller:
php<?php // src/Controller/DefaultController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Doctrine\ORM\EntityManagerInterface; use App\Entity\User; use Symfony\Component\HttpFoundation\JsonResponse; // Import JsonResponse class DefaultController { private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } /** * @Route("/", name="app_index") */ public function index(): Response { return new Response('Hello ServBay and Symfony!'); } /** * @Route("/add-user", name="app_add_user") */ public function addUser(): Response { $user = new User(); // ใช้ข้อมูลตัวอย่างของแบรนด์ ServBay $user->setName('ServBay Demo User'); $user->setEmail('[email protected]'); // บันทึกข้อมูลเตรียมเขียนลงฐานข้อมูล $this->entityManager->persist($user); // สั่ง Commit $this->entityManager->flush(); return new Response('User added successfully!'); } /** * @Route("/get-users", name="app_get_users") */ public function getUsers(): JsonResponse { // ดึง User ทั้งหมดจากฐานข้อมูล $users = $this->entityManager->getRepository(User::class)->findAll(); // แปลงข้อมูลเป็น array สำหรับ JsonResponse $usersArray = []; foreach ($users as $user) { $usersArray[] = [ 'id' => $user->getId(), 'name' => $user->getName(), 'email' => $user->getEmail(), ]; } // ตอบกลับข้อมูลแบบ JSON return new JsonResponse($usersArray); } }
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ทดสอบการใช้งาน
- เปิด
https://servbay-symfony-test.local/add-user
เพื่อเพิ่ม User - เปิด
https://servbay-symfony-test.local/get-users
เพื่อดู User ทั้งหมดในรูปแบบ JSON
- เปิด
ตัวอย่างระบบแคชและ NoSQL (Symfony Cache)
ServBay ได้ติดตั้ง Redis และ Memcached พร้อม PHP Extension ให้ใช้งานได้ทันทีผ่านคอมโพเนนท์ Symfony Cache
ตั้งค่าการเชื่อมต่อแคช
แก้ไขไฟล์
.env
ตั้งค่า Connection สำหรับแคช Memcached หรือ Redis ตามต้องการ- สำหรับ Memcached: Port เริ่มต้นที่ ServBay ใช้คือ
11211
dotenvตรวจสอบว่าเปิดใช้งาน Memcached ใน Control Panel แล้ว# .env # ... อื่น ๆ ... CACHE_DSN=memcached://127.0.0.1:11211
1
2
3 - สำหรับ Redis: Port เริ่มต้นคือ
6379
dotenvตรวจสอบว่า Redis เปิดใช้งานใน Control Panel แล้ว# .env # ... อื่น ๆ ... CACHE_DSN=redis://127.0.0.1:6379 # ถ้า Redis ตั้งรหัสผ่าน (ค่าเริ่มต้นของ ServBay คือไม่มีรหัสผ่าน) # CACHE_DSN=redis://:[email protected]:6379
1
2
3
4
5
- สำหรับ Memcached: Port เริ่มต้นที่ ServBay ใช้คือ
เพิ่มตัวอย่างการใช้แคช
แก้ไข
src/Controller/DefaultController.php
เพิ่ม Route และเมธอดตัวอย่างที่ใช้ Symfony Cache ร่วมกับ Memcached หรือ Redis โดย InjectCacheInterface
เริ่มต้นจาก Inject
CacheInterface
ใน Constructor:php<?php // src/Controller/DefaultController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Doctrine\ORM\EntityManagerInterface; use App\Entity\User; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Contracts\Cache\CacheInterface; // Import CacheInterface class DefaultController { private $entityManager; private $cache; // เพิ่มคุณสมบัติ cache // Constructor รับ CacheInterface public function __construct(EntityManagerInterface $entityManager, CacheInterface $cache) { $this->entityManager = $entityManager; $this->cache = $cache; } // ... methods อื่น ๆ ... }
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เพิ่ม Route ใน
config/routes.yaml
:yaml# config/routes.yaml # ... อื่น ๆ ... cache_example: path: /cache-example controller: App\Controller\DefaultController::cacheExample
1
2
3
4
5เพิ่มเมธอด Controller สำหรับแสดงตัวอย่างแคช:
php<?php // src/Controller/DefaultController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Doctrine\ORM\EntityManagerInterface; use App\Entity\User; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Contracts\Cache\CacheInterface; use Symfony\Component\Cache\Item\ItemInterface; // Import ItemInterface class DefaultController { private $entityManager; private $cache; public function __construct(EntityManagerInterface $entityManager, CacheInterface $cache) { $this->entityManager = $entityManager; $this->cache = $cache; } // ... methods อื่น ๆ ... /** * @Route("/cache-example", name="app_cache_example") */ public function cacheExample(): Response { // ดึงข้อมูลจากแคช (ถ้าไม่มีจะ run callback เพื่อสร้างและเก็บแคชใหม่) $cacheItem = $this->cache->get('my_symfony_cache_key', function (ItemInterface $item) { // ตั้งอายุแคช 1 ชั่วโมง $item->expiresAfter(3600); // สมมติเป็นข้อมูลที่ต้องประมวลผลหรือ Query DB $data = "Data generated at " . date('Y-m-d H:i:s'); // คืนค่าข้อมูลไว้สำหรับ cache return $data; }); // $cacheItem จะเป็นข้อมูลจากแคชหรือที่เพิ่งสร้างใหม่ $output = "From Cache: " . $cacheItem; return new Response($output); } }
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ทดสอบการใช้แคช
- เปิด
https://servbay-symfony-test.local/cache-example
ครั้งแรกข้อมูลจะคำนวณใหม่และเก็บแคชไว้ รอบถัดไป (ก่อนหมดอายุแคช) จะดึงข้อมูลจาก Cache โดยตรง (Memcached หรือ Redis)
- เปิด
คำถามที่พบบ่อย (FAQ)
ถาม: เข้า https://servbay-symfony-test.local
แล้วเว็บไม่เจอหรือแจ้ง 500 Error ทำอย่างไร?
ตอบ: ให้ตรวจสอบ
- ServBay ทำงานปกติหรือไม่ เว็บเซิร์ฟเวอร์ (Caddy/Apache) เปิดหรือยัง
- ตั้งค่าชื่อโดเมนและ Website Root ไว้ถูกหรือเปล่า (
servbay-symfony-test.local
และ/Applications/ServBay/www/servbay-symfony-app/public
) - ดูไฟล์ Log (
var/log/dev.log
) จะเห็นรายละเอียดข้อผิดพลาด - รัน
composer install
ที่โฟลเดอร์โปรเจกต์ให้แน่ใจว่าติดตั้ง Dependency ครบแล้ว - ตรวจสอบว่า PHP Version ที่ตั้งไว้ตรงกับที่ Symfony รองรับ
ถาม: เชื่อมต่อฐานข้อมูลไม่ได้?
ตอบ: ให้ตรวจสอบ
- ตรวจสอบว่าบริการ MySQL หรือ PostgreSQL ใน ServBay เปิดใช้งานอยู่หรือไม่
- ค่าตัวแปรใน
.env
โดยเฉพาะDATABASE_URL
(username, password, host, port, dbname) ถูกต้องหรือไม่ - User/รหัสผ่าน ตรงกับที่ตั้งไว้ใน ServBay ใช่หรือไม่
- ฐานข้อมูล
servbay_symfony_app
ถูกสร้างขึ้นแล้วหรือยัง
ถาม: ใช้ php bin/console
ไม่ได้?
ตอบ: ต้องอยู่ในโฟลเดอร์ /Applications/ServBay/www/servbay-symfony-app
และตรวจสอบว่าคำสั่ง php ที่ใช้ใน Terminal ถูกตั้งค่ามาจาก ServBay หรือไม่ (ServBay จะเซ็ต Path ให้อัตโนมัติ) ตรวจสอบโดยรัน which php
สรุป
จากคู่มือนี้ คุณสามารถสร้าง ตั้งค่า และรันโปรเจกต์ Symfony พื้นฐานบน macOS ด้วย ServBay ได้สำเร็จ ServBay ได้เตรียมส่วนประกอบหลักทุกอย่างที่ Symfony ต้องใช้ไว้ให้ครบ (PHP, Composer, เว็บเซิร์ฟเวอร์, ฐานข้อมูล, แคช) และลดความซับซ้อนในการตั้งค่าต่าง ๆ เหลือเพียงไม่กี่ขั้นตอน คุณสามารถต่อยอดโปรเจกต์นี้เพื่อเรียนรู้และใช้งานฟีเจอร์อื่น ๆ ของ Symfony หรือผสานกับบริการซอฟต์แวร์เพิ่มเติมที่มีใน ServBay ได้อย่างเต็มที่