Không có con đường nào trải đầy hoa hồng. Nếu bạn mới học PHP, có lẽ bạn đã từng trải qua cảm giác:
Hôm qua code chạy ngon lành.
Hôm nay mở lên...
Trang trắng.
Hoặc:
Login đúng password nhưng vẫn báo sai.
Hoặc:
MySQL không báo lỗi gì nhưng dữ liệu chẳng chịu chui vào database.
Tin vui là:
Bạn không cô đơn.😀😀
Hầu hết lập trình viên PHP đều từng gặp những lỗi như vậy.
Thậm chí nhiều người làm web 5–10 năm vẫn thỉnh thoảng tự "dính bẫy" những lỗi cực kỳ ngớ ngẩn.
Trong bài viết này, chúng ta sẽ điểm qua 30 lỗi PHP phổ biến nhất mà người mới thường gặp và cách xử lý nhanh nhất.
Nhóm 1: Lỗi cú pháp (Syntax Errors)
1. Parse Error
Lỗi kinh điển của người mới.
Ví dụ:
echo "Hello"
echo "World";
Thiếu dấu chấm phẩy.
PHP:
Tôi không hiểu bạn muốn làm gì.
Triệu chứng:
- Trang trắng
- Fatal error
- Parse error
2. Thiếu dấu ngoặc đóng
Ví dụ:
if($age > 18)
{
echo "Adult";
Quên dấu:
}3. Thiếu dấu ngoặc kép
Ví dụ:
$name = "Lap Trinh Dat Viet;
PHP sẽ rất khó chịu, kiểu: Mỗi việc đơn giản mà làm cũng không xong.
4. Dùng nhầm dấu ngoặc
Ví dụ:
if($a > $b]
Thay vì:
if($a > $b)
5. Copy code từ Internet làm hỏng ký tự
Ví dụ:
“
”
‘
’trông giống dấu nháy bình thường nhưng thực tế khác hoàn toàn. Và "mò" ra lỗi này thật sự rất vất vả vì nhìn "có vẻ" như không sai gì cả!
Nhóm 2: Biến và dữ liệu
6. Undefined Variable
Ví dụ:
echo $username;
Nhưng chưa khai báo:
$username7. Undefined Index
Ví dụ:
$_POST['email']
Nhưng form chưa gửi email.
8. Undefined Array Key
PHP 8 báo lỗi này rất thường xuyên.
9. Viết sai tên biến
Ví dụ:
$userName
và
$username
là hai biến khác nhau.
10. Nhầm giữa isset() và empty()
Hai ông nhìn giống nhau.
Nhưng tính cách rất khác.
Nhóm 3: Form không hoạt động
11. PHP không nhận dữ liệu POST
Nguyên nhân phổ biến:
method="get"nhưng code lại dùng:
$_POST12. PHP không nhận dữ liệu GET
Ngược lại với lỗi trên.
13. Thiếu thuộc tính name
Ví dụ:
<input type="text">Không có:
name="username"14. Submit nhưng không có dữ liệu
Do:
disabledhoặc sai form.
15. Form gửi nhưng trang không phản hồi
Thường do:
action=""hoặc sai đường dẫn.
Nhóm 4: Login và Session
16. Login đúng password nhưng vẫn fail
Một trong những lỗi phổ biến nhất.
Nguyên nhân:
- trim()
- khoảng trắng
- hash sai
- session lỗi
17. Session không hoạt động
Quên:
session_start();
18. Session tự biến mất
Host miễn phí đôi khi xử lý session không ổn định.
19. Header Already Sent
Ví dụ:
echo "Hello";
header("Location:index.php");
PHP:
Muộn rồi bạn ơi.
20. Redirect không hoạt động
Do output xuất hiện trước header.
Nhóm 5: Database
21. MySQL không connect được
Lỗi cực phổ biến trên host thật.
Nguyên nhân:
- sai hostname
- sai username
- sai password
22. INSERT không chạy
Tưởng chạy.
Thực ra không chạy.
23. UPDATE không hoạt động
Điều kiện WHERE sai.
24. DELETE không xóa dữ liệu
Sai ID hoặc sai kết nối.
25. Query trả về rỗng
Thường là do:
WHEREkhông khớp dữ liệu.
Nhóm 6: Upload host thật
26. Sai đường dẫn (Path)
Lỗi "vô hình".
Đặc biệt hay gặp trên hosting.
27. Include file thất bại
Ví dụ:
include('config.php');
Nhưng file nằm ở thư mục khác.
28. Không gửi được email
Nhiều host miễn phí chặn:
mail()29. Upload file thất bại
Nguyên nhân:
- quyền thư mục
- kích thước file
- cấu hình PHP
30. Trang trắng chết lặng (White Screen of Death)
Lỗi đáng sợ nhất.
Không báo gì.
Không hiện gì.
Chỉ còn một màu trắng tinh khiết.
Thường do:
- Fatal Error
- Memory Limit
- Parse Error
- Include lỗi
Làm gì khi gặp lỗi PHP?
Nguyên tắc đầu tiên:
Đừng hoảng.
Nguyên tắc thứ hai:
Đừng sửa 20 thứ cùng lúc.
Nguyên tắc thứ ba:
Đọc kỹ thông báo lỗi.
Nếu không có thông báo lỗi:
Bật hiển thị lỗi:
error_reporting(E_ALL);
ini_set('display_errors', 1);
Sau đó kiểm tra từng bước.
Kết luận
Lập trình không phải là cuộc thi xem ai viết code hoàn hảo nhất.
Mà là cuộc thi xem ai bình tĩnh tìm ra lỗi nhanh hơn.
Nếu bạn đang gặp:
- Parse Error
- Fatal Error
- Undefined Variable
- Session lỗi
- Login fail
- MySQL không connect
thì xin thành thật chúc mừng.
Bạn đang đi đúng con đường mà hầu hết lập trình viên PHP đều từng đi qua.
Và tin vui là:
Hầu hết những lỗi này đều có cách sửa rất đơn giản khi bạn biết nguyên nhân thực sự nằm ở đâu.