Repository này lưu trữ mã nguồn các bài tập và dự án thực hành của môn học Lập trình Web.
web-programming-course/
├── .git/ # Thư mục ẩn chứa cấu hình quản lý phiên bản Git
├── btl1-wordpress/ # Thư mục mã nguồn Bài tập lớn 1 (WordPress)
├── btl2-bootstrap-static/ # Thư mục mã nguồn Bài tập lớn 2 (Giao diện tĩnh với Bootstrap)
├── btl3-php-dynamic/ # Thư mục mã nguồn Bài tập lớn 3 (Trang web động với PHP & MySQL)
├── explanation_file/ # Thư mục chứa các tài liệu giải thích, báo cáo
└── README.md # File thông tin tổng quan của repository
Tại phòng máy của trường, môi trường phát triển có thể chưa được cấu hình sẵn. Dưới đây là hướng dẫn chi tiết từng bước tải, chạy dự án và xử lý các lỗi ngoại lệ thường gặp.
-
1. Tải dự án (Repository) về máy
- Khi máy có sẵn Git (Khuyên dùng - chọn 1 trong các dòng lệnh sau):
- Tải đầy đủ mã nguồn và lịch sử commit:
git clone https://github.com/b22dccn256/web-programming-course.git - Tải siêu tốc (chỉ lấy phiên bản mới nhất, dung lượng nhẹ nhất):
git clone --depth 1 https://github.com/b22dccn256/web-programming-course.git - Tải riêng nhánh
main:git clone -b main --single-branch https://github.com/b22dccn256/web-programming-course.git
- Tải đầy đủ mã nguồn và lịch sử commit:
- Khi máy không có Git: Lên trang GitHub của dự án, nhấn nút Code (màu xanh lá) -> Chọn Download ZIP.
- Hoặc chạy 1 dòng lệnh tải ZIP qua Terminal:
curl -L https://github.com/b22dccn256/web-programming-course/archive/refs/heads/main.zip -o project.zip
- Hoặc chạy 1 dòng lệnh tải ZIP qua Terminal:
- Khi máy có sẵn Git (Khuyên dùng - chọn 1 trong các dòng lệnh sau):
-
2. Chuẩn bị môi trường PHP & MySQL
- Đảm bảo máy lab đã cài sẵn PHP và hệ quản trị CSDL MySQL (hoặc MariaDB / Laragon / Wamp / MySQL Server).
- Mở Terminal/Command Prompt kiểm tra lệnh PHP:
php -v.
-
3. Thiết lập và cấu hình trên Visual Studio Code (VS Code)
- Mở VS Code -> Chọn
File -> Open Folder-> Chọn thư mụcweb-programming-coursevừa tải/giải nén. - Cài đặt Extensions hỗ trợ: Mở mục Extensions (
Ctrl + Shift + X), tìm và cài đặt:PHP Intelephense: Gợi ý code và kiểm tra cú pháp PHP.PHP Server(bởi brapifra): Cho phép khởi chạy nhanh server ảo PHP.
- Cấu hình đường dẫn PHP executable (nếu VS Code báo thiếu PHP):
- Mở Settings trong VS Code (
Ctrl + ,). - Tìm từ khóa
php.validate.executablePath. - Chọn Edit in settings.json và điền đường dẫn tới
php.exetrên máy lab:"php.validate.executablePath": "C:\\location_to_php\\php.exe"
- Mở Settings trong VS Code (
- Mở VS Code -> Chọn
-
4. Khởi tạo thư viện dự án (Composer)
- Mở Terminal trong VS Code (
Ctrl + ~). - Di chuyển vào thư mục bài 3:
cd btl3-php-dynamic - Chạy lệnh:
composer installđể tải và cài đặt các phụ thuộc trongcomposer.json.
- Mở Terminal trong VS Code (
-
5. Cấu hình Cơ sở dữ liệu (Database)
- Mở công cụ quản lý MySQL trên máy lab (như MySQL Workbench, DBeaver, HeidiSQL hoặc phpMyAdmin).
- Tạo cơ sở dữ liệu mới có tên:
btl3_order_management. - Thực thi (Import/Run) lần lượt 2 file SQL trong thư mục
btl3-php-dynamic/database/:schema.sql(tạo cấu hình bảng)seed.sql(chèn dữ liệu mẫu)
- Mở file
btl3-php-dynamic/config/database.phpbằng VS Code và cập nhật thông tin kết nối cho khớp với máy lab:DB_HOST: Mặc địnhlocalhost(hoặc127.0.0.1).DB_PORT: Mặc định3306.DB_NAME:btl3_order_management.DB_USER: Tên tài khoản MySQL (thường làroot).DB_PASS: Mật khẩu tài khoản MySQL (ví dụ:1111hoặc để trống"").
-
6. Khởi chạy và kiểm tra trang web
- Cách 1 (Bằng Terminal - Khuyên dùng): Mở Terminal tại thư mục
btl3-php-dynamic, gõ lệnh:php -S localhost:8000 - Cách 2 (Bằng VS Code Extension): Click chuột phải vào file
index.phptrong thư mụcbtl3-php-dynamic-> Chọn PHP Server: Serve project. - Mở trình duyệt web và truy cập địa chỉ:
http://localhost:8000để kiểm tra.
- Cách 1 (Bằng Terminal - Khuyên dùng): Mở Terminal tại thư mục
-
1. Ngoại lệ:
'php'không được nhận diện ('php' is not recognized as an internal or external command)- Nguyên nhân: PHP chưa được thêm vào biến môi trường (Environment Variables - PATH) của Windows trên máy lab.
- Hướng giải quyết:
- Cách 1 (Thêm vào PATH): Mở Start Menu -> Tìm "Environment Variables" -> Chọn "Edit the system environment variables" -> Nhấn "Environment Variables" -> Tại ô System variables, chọn dòng
Path-> NhấnEdit-> NhấnNewvà dán đường dẫn thư mục chứa filephp.exe(ví dụC:\phphoặcC:\tools\php). Mở lại Terminal mới để kiểm tra lạiphp -v. - Cách 2 (Chạy đường dẫn trực tiếp): Không cần thêm PATH, gõ đường dẫn trực tiếp khi khởi chạy server:
C:\path_to_php\php.exe -S localhost:8000. - Tải bản PHP Zip chính thức qua Terminal nếu máy thiếu hẳn PHP:
curl -L https://windows.php.net/downloads/releases/php-8.2.27-nts-Win32-vs16-x64.zip -o php.zip
- Cách 1 (Thêm vào PATH): Mở Start Menu -> Tìm "Environment Variables" -> Chọn "Edit the system environment variables" -> Nhấn "Environment Variables" -> Tại ô System variables, chọn dòng
-
2. Ngoại lệ:
'git'hoặc'composer'không được nhận diện- Nguyên nhân: Máy phòng lab chưa được cài đặt phần mềm Git hoặc Composer.
- Hướng giải quyết:
- Nếu máy có Git nhưng gặp lỗi tải chậm/lỗi mạng: Dùng lệnh clone tối ưu dung lượng siêu nhẹ:
git clone --depth 1 https://github.com/b22dccn256/web-programming-course.git - Nếu máy thiếu Git: Tải file ZIP dự án trực tiếp qua Terminal với 1 dòng lệnh:
curl -L https://github.com/b22dccn256/web-programming-course/archive/refs/heads/main.zip -o project.zip - Nếu máy thiếu Composer: Tải file
composer.pharchính thức trực tiếp qua Terminal với 1 dòng lệnh:curl -sS https://getcomposer.org/download/latest-stable/composer.phar -o composer.phar(Sau đó chạy lệnh cài đặt thư viện bằng PHP:php composer.phar install).
- Nếu máy có Git nhưng gặp lỗi tải chậm/lỗi mạng: Dùng lệnh clone tối ưu dung lượng siêu nhẹ:
-
3. Ngoại lệ: Lỗi kết nối CSDL (
PDOException: SQLSTATE[HY000] [2002] Connection refusedhoặcAccess denied)- Nguyên nhân:
- Lỗi
2002: Dịch vụ MySQL Server chưa được bật, hoặc cấu hìnhDB_HOST/DB_PORTbị sai. - Lỗi
1045 (Access denied): SaiDB_USERhoặcDB_PASS. - Lỗi
Unknown database: Chưa tạo cơ sở dữ liệubtl3_order_management.
- Lỗi
- Hướng giải quyết:
- Kiểm tra dịch vụ MySQL đã bật chưa (bằng cách vào
Services.msctìmMySQLvà bấm Start, hoặc bật qua công cụ quản trị máy lab). - Kiểm tra lại cổng kết nối của MySQL (nhiều máy lab dùng cổng
3307thay vì3306), cập nhật lạiDB_PORTtrongconfig/database.php. - Thử đăng nhập MySQL bằng công cụ (DBeaver/Workbench) để xác nhận chính xác
DB_USERvàDB_PASS, sau đó cập nhật thông số vàoconfig/database.php. - Tạo lại database đúng tên
btl3_order_managementtrước khi import SQL.
- Kiểm tra dịch vụ MySQL đã bật chưa (bằng cách vào
- Nguyên nhân:
-
4. Ngoại lệ: Lỗi thiếu Extension PDO (
Could not find driverhoặcUndefined class constant 'ATTR_ERRMODE')- Nguyên nhân: File cấu hình
php.inichưa bật bộ điều khiển kết nối MySQL PDO. - Hướng giải quyết:
- Tìm file
php.initrong thư mục cài đặt PHP. - Mở file bằng Notepad hoặc VS Code, bấm
Ctrl + Ftìm dòng;extension=pdo_mysqlhoặc;extension=mysqli. - Xóa dấu chấm phẩy
;ở đầu dòng đó để bật extension (thànhextension=pdo_mysql). - Lưu file
php.inivà khởi chạy lại lệnh serverphp -S localhost:8000.
- Tìm file
- Nguyên nhân: File cấu hình
-
5. Ngoại lệ: Cổng 8000 đã bị chiếm dụng (
Address already in usehoặcFailed to listen on localhost:8000)- Nguyên nhân: Có ứng dụng khác hoặc một tiến trình PHP Server cũ đang chạy và dùng cổng
8000. - Hướng giải quyết: Đổi sang một cổng ngẫu nhiên khác chưa bị chiếm dụng khi chạy server.
- Ví dụ:
php -S localhost:8080hoặcphp -S localhost:8888. Sau đó truy cậphttp://localhost:8080.
- Ví dụ:
- Nguyên nhân: Có ứng dụng khác hoặc một tiến trình PHP Server cũ đang chạy và dùng cổng
-
6. Ngoại lệ: Không tải được CSS/JS hoặc đường dẫn hình ảnh bị lỗi (404 Not Found)
- Nguyên nhân: Mở server ở sai vị trí thư mục làm cho các đường dẫn tương đối (relative paths) bị sai lệch.
- Hướng giải quyết: Đảm bảo Terminal đang đứng đúng tại thư mục chứa bài 3 (
btl3-php-dynamic) trước khi gõ lệnhphp -S localhost:8000. Không đứng ở thư mục chaweb-programming-courseđể chạy lệnh này.