ผู้เขียนมีโจทย์ใหม่ต้องติดตั้งระบบที่ทำงานด้วย PHP + MYSQL + Framework Yii Version 1 ฟังดูไม่น่ายาก ใช้เวลาหมดเป็นวัน ๆ ไม่คืบ จนเป็นที่มาของการบันทึกเรื่องราวการทำงานในคร้้งนี้เก็บเอาไว้ สำหรับหลายๆ ท่านที่ต้องการใช้งานมองหาเอกสารแนะนำไม่ค่อยมี บางทีอาจจะมีประโยชน์
ว่ากันด้วยครึ่งวันเช้า หาวิธีติดตั้งค้นหาในเน็ตดูแล้วลองทำตามจนสำเร็จกลายเป็น Yii Framework V2 อีกติดตั้งด้วย Composer จนเปิดระบบด้วยคำสั่ง php yii serve ทำงานที่ port 8080 ได้สำเร็จด้วย ทำตามเอกสารติดตั้งทุกประการ เพิ่มแค่ดาวน์โหลดไฟล์มาด้วย เพราะเครื่องมือดาวน์โหลดมาไม่ครบ
ครึ่งวันบ่ายก็ยังเจอปัญหาเดิม ๆ คือ "PHP Fatal error: Uncaught CDbException: CDbConnection failed to open the DB connection." เอายังไงต่อดี ต้องกลับไปหาเอกสารทำงานใหม่จนได้มา เพื่อไม่ให้เสียเวลาเราไปเริ่มต้นกันเลยดีกว่า
ขั้นตอนที่ 1 ดาวน์โหลดเฟรมเวิร์ค Yii เวอร์ชั่น 1 ตามตัวอย่างข้างล่างนี้เลย
wget https://github.com/yiisoft/yii/releases/download/1.1.23/yii-1.1.23.445827.tar.gz
ขั้นตอนที่ 2 แตกไฟล์ออก แล้วทำงานตรวจสอบความพร้อมของเซิร์ฟเวอร์ว่าติดตั้งซอฟต์แวร์ครบถ้วนหรือยัง โดยเปิดเวบไซต์ไปที่โฟลเดอร์ http://localhost/yii-test/requirements/ หากตัวไหนยังขาดก็ลงให้ครบ รอบแรกผู้เขียนติดตั้งด้วย PHP8.0 แต่ไม่สำเร็จ อาจจะใช้งานได้ก็ได้ เพราะหลงไปหลงมา ท้ายสุดกลับมาใช้ PHP7.4 แทน สำหรับโอเอสเป็น Ubuntu 18.04LTS
sudo tar xzvf yii-1.1.23.445827.tar.gz
sudo a2dismod php8.0
sudo a2enmod php7.4
sudo systemctl restart apache2
sudo apt-cache search php7.4
sudo apt-cache search php7.4-mcrypt
sudo apt install php7.4-mcrypt
sudo apt-cache search php7.4
sudo apt install php7.4-odbc
sudo apt install php7.4-memcache
ขั้นตอนที่ 3 เป็นตัวอย่างของหน้าจอที่ตรวจสอบได้แล้วว่าการทำงานของ PHP7.4 และโมดูลต่าง ๆทำงานได้ครบถ้วนสมบูรณ์ ก็ไปถึงขั้นตอนการทดสอบ http://localhost/yii-test/demos/helloworld
ขั้นตอนที่ 4 สร้างฐานข้อมูลสำหรับทดสอบการเชื่อมต่อ PHP7.4, OBDC และ MYSQL
CREATE TABLE tbl_lookup
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(128) NOT NULL,
code INTEGER NOT NULL,
type VARCHAR(128) NOT NULL,
position INTEGER NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tbl_user
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(128) NOT NULL,
password VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL,
profile TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tbl_post
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(128) NOT NULL,
content TEXT NOT NULL,
tags TEXT,
status INTEGER NOT NULL,
create_time INTEGER,
update_time INTEGER,
author_id INTEGER NOT NULL,
CONSTRAINT FK_post_author FOREIGN KEY (author_id)
REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tbl_comment
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
content TEXT NOT NULL,
status INTEGER NOT NULL,
create_time INTEGER,
author VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL,
url VARCHAR(128),
post_id INTEGER NOT NULL,
CONSTRAINT FK_comment_post FOREIGN KEY (post_id)
REFERENCES tbl_post (id) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tbl_tag
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(128) NOT NULL,
frequency INTEGER DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Draft', 'PostStatus', 1, 1);
INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Published', 'PostStatus', 2, 2);
INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Archived', 'PostStatus', 3, 3);
INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Pending Approval', 'CommentStatus', 1, 1);
INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Approved', 'CommentStatus', 2, 2);
INSERT
INTO tbl_user (username, password, email) VALUES
('demo','$2a$10$JTJf6/XqC94rrOtzuF397OHa4mbmZrVTBOQCmYD9U.obZRUut4BoC','webmaster@example.com');
INSERT
INTO tbl_post (title, content, status, create_time, update_time,
author_id, tags) VALUES ('Welcome!','This blog system is developed using
Yii. It is meant to demonstrate how to use Yii to build a complete
real-world application. Complete source code may be found in the Yii
releases.
Feel free to try this system by writing new posts and posting comments.',2,1230952187,1230952187,1,'yii, blog');
INSERT
INTO tbl_post (title, content, status, create_time, update_time,
author_id, tags) VALUES ('A Test Post', 'Lorem ipsum dolor sit amet,
consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.', 2,1230952187,1230952187,1,'test');
INSERT INTO
tbl_comment (content, status, create_time, author, email, post_id)
VALUES ('This is a test comment.', 2, 1230952187, 'Tester',
'tester@example.com', 2);
INSERT INTO tbl_tag (name) VALUES ('yii');
INSERT INTO tbl_tag (name) VALUES ('blog');
ขั้นตอนที่ 5 เข้าไปแก้ไขคอนฟิก /blog/protected/config/mainconfig.php เปลี่ยนในส่วนติดต่อกับ MYSQL เป็นอันจบพิธี
ผ่านไปได้ดีอีกเรื่องหนึ่งสำหรับการติดตั้ง APACHE2, MYSQL, PHP7.4 และ Framework Yii เวอร์ชั่น 1 ทำได้เองไม่ยาก ผู้เขียนยังมีเรื่องราวดี ๆที่จะมานำเสนอกันอีกมากมายเพราะช่วงนี้กำลังอยู่ในขั้นตอนการพัฒนาซอฟต์แวร์เล็ก ๆ ทรงประสิทธิภาพอยู่นั่นเอง อย่าลืมเข้าไปแวะชมสินค้าอุปกรณ์ GPS TRACKER ได้ที่จีพีเอสไทย จีพีเอสไทย ฉับไว พร้อมบริการ