Trong lúc làm việc với lập trình nói chung, PHP nói riêng, đôi khi chúng ta gặp tình huống thật sự khiến ta rất "hoang mang", cảm giác bất lực kiểu như: "gì nữa đây?!".
Bạn viết code rất tự tin, một dòng code rất "bình thường", "đơn giản":<?php
hello();
?>
Bấm Run.
Và PHP lạnh lùng trả lời:
Fatal error:
Call to undefined function hello()
Bạn đứng hình vài giây.
Trong đầu bắt đầu xuất hiện hàng loạt suy nghĩ:
- “Ủa? Hàm này mình vừa viết mà?”
- “Hay PHP bị lỗi?”
- “Có làm gì sai đâu?” 🤡
👉 Chúc mừng, bạn vừa gặp một trong những lỗi khiến người mới cực kỳ hoang mang:
Call to Undefined Function
Lỗi Call to undefined function xảy ra khi chương trình gọi một hàm không tồn tại hoặc chưa được nạp vào chương trình.
Nguyên nhân phổ biến:
- viết sai tên hàm
- quên include file
- gọi hàm trước khi định nghĩa
- extension PHP chưa bật
- dùng hàm không tồn tại trong phiên bản PHP hiện tại
Ví dụ đời thường
Hãy tưởng tượng bạn "hớn hở" gọi điện:
“Alo Tuấn ! Nhớ 5 giờ chiều gặp nhau quán Ông Béo nha”
Đầu dây bên kia "lạnh lùng" trả lời:
“Xin lỗi, ở đây không có ai tên Tuấn.” 😅
👉 PHP cũng vậy.
Bạn gọi một hàm.
Nhưng PHP tìm mãi không thấy.
Ví dụ đơn giản
<?php
sayHello();
?>
Trong khi bạn chưa hề tạo hàm:
function sayHello() {
}
👉 PHP:
“Tôi không biết
sayHello()là ai cả.” 🤡
Cách tạo hàm đúng
<?php
function sayHello() {
echo "Hello";
}
sayHello();
?>
✅ Chạy bình thường.
7 nguyên nhân phổ biến nhất
❌ 1. Gõ sai tên hàm
strln("Hello");
Trong khi đúng phải là:
strlen("Hello");
👉 Chỉ thiếu một chữ e.
👉 Nhưng PHP "không rảnh" để đoán hộ bạn 😅
Ví dụ đời thường khác
Bạn gọi:
“Anh Nguyên ơi!”
Trong khi tên thật là:
“Nguyễn.”
Người ta sẽ quay lại nhìn bạn kiểu:
“Ai cơ?” 🤡
❌ 2. Quên include file chứa hàm
functions.php
<?php
function hello() {
echo "Hello";
}
?>
index.php
<?php
hello();
?>
👉 Lỗi.
Vì PHP chưa được nạp file functions.php. Kiểu như trong công ty, "sếp" muốn phòng Marketing ra ngoài tiến hành một "chiến dịch" quảng cáo, nhưng lại đứng trước...phòng Kế Toán để "ra lệnh"!
Cách sửa
<?php
require "functions.php";
hello();
?>
Đây là lỗi cực kỳ phổ biến
Người mới thường nghĩ:
“File nằm cùng folder mà, PHP tự biết chứ?” 😅
Không đâu 🤡
PHP không tự đọc suy nghĩ của bạn.
❌ 3. Gọi hàm trước khi include
<?php
hello();
require "functions.php";
?>
👉 Lúc gọi hello(), PHP vẫn chưa biết hàm đó tồn tại.
❌ 4. Extension PHP chưa bật
Ví dụ:
mysqli_connect();
Nếu extension mysqli chưa bật:
Call to undefined function mysqli_connect()
👉 Đây là lỗi nhiều người gặp khi cài XAMPP/WAMP.
Ví dụ đời thường
Bạn mua máy giặt.
Nhưng chưa cắm điện.
Rồi thắc mắc:
“Ủa sao bấm mãi không chạy? Máy mới mà đã hỏng rồi” 😅
❌ 5. Dùng hàm thuộc framework/library nhưng chưa cài
Ví dụ:
dd($data);
dd() là của Laravel.
Nếu dùng PHP thường → lỗi.
❌ 6. Sai phiên bản PHP
Một số hàm chỉ có ở PHP mới.
Hosting cũ có thể không hỗ trợ.
❌ 7. Gõ nhầm chữ hoa/chữ thường (ở ngôn ngữ khác)
Ví dụ Python:
Print("Hello")
Trong khi đúng là:
print("Hello")
Cách debug nhanh
Bước 1: Đọc tên hàm bị lỗi
Ví dụ:
undefined function hello()
👉 Tập trung vào hello().
Bước 2: Kiểm tra có định nghĩa chưa
function hello() {
}
Bước 3: Kiểm tra include/require
Bước 4: Kiểm tra spelling
- thiếu chữ?
- sai chữ?
-
sai dấu
_?
Bước 5: Kiểm tra extension
Ví dụ thực tế với PHP + MySQL
$conn = mysqli_connect(...);
Nếu server chưa bật mysqli:
Call to undefined function mysqli_connect()
👉 Không phải code sai.
👉 Chỉ là extension chưa hoạt động.
Ví dụ "hơi bị tức"
Bạn debug gần 2 tiếng.
Cuối cùng phát hiện:
require "function.php";
Trong khi file thật là:
functions.php
👉 Thiếu đúng một chữ s.
👉 Bay mất cả buổi tối 🤡
Checklist "vô cùng đơn giản"
Khi gặp:
Call to undefined function
Hãy kiểm tra:
- Có viết đúng tên hàm không?
- Hàm đã được tạo chưa?
- Đã include file chưa?
- Include đúng đường dẫn chưa?
- Extension PHP đã bật chưa?
- Hàm đó có thuộc framework/library không?
Một sự thật hơi "đáng tiếc"
Rất nhiều lỗi kiểu này không phải vì logic sai.
👉 Chỉ đơn giản là:
- thiếu include
- sai tên file
- hoặc gõ sai đúng… 1 ký tự 😅
Tổng kết
Call to undefined function nghĩa là:
Chương trình đang gọi một hàm mà nó không biết tồn tại.
Nguyên nhân phổ biến nhất:
- sai tên hàm
- quên include
- extension chưa bật
👉 Bí quyết debug:
- đọc kỹ tên hàm
- kiểm tra include
- kiểm tra spelling
❓ FAQ nhanh
Đây có phải lỗi nghiêm trọng không?
→ Không, nhưng rất phổ biến.
Vì sao file cùng folder mà vẫn lỗi?
→ Vì PHP không tự include file.
mysqli_connect undefined function là gì?
→ Thường do extension mysqli chưa bật.