Chủ Nhật, 24 tháng 5, 2026

Fatal Error là gì? - Khi PHP quyết định: "Thôi nghỉ chơi luôn"

Thông thường, tâm lý chúng ta khi viết code là: "có gì thì cứ coi thử báo lỗi gì rồi tính tiếp". Tuy nhiên, thỉnh thoảng chúng ta sẽ gặp một thông báo kiểu như: "Lỗi!!!". Không hề biết lỗi gì, không thể đoán  mò là do cái gì. Tình trạng y như bị đóng sầm canh cửa trước mắt!

Bạn mở website.

Và thấy:

Fatal error:
Uncaught Error:
Call to undefined function...

Hoặc:

Fatal error:
Allowed memory size exhausted

Hoặc đáng sợ hơn:

Fatal error:
Maximum execution time exceeded

👉 PHP không còn cảnh báo nhẹ nhàng nữa.

👉 Không còn “warning”.

👉 Không còn “notice”.

👉 Đây là level:

“Code của bạn có vấn đề nghiêm trọng.
Tôi dừng chương trình tại đây.” 🤡 Bye, bye..! 

Rất phũ phàng, rất "bề trên"! Nói chung là ném cho chúng ta một "cục tức"!


Fatal Error là gì?


Fatal Error trong PHP là lỗi nghiêm trọng khiến chương trình dừng ngay lập tức và không thể tiếp tục chạy.

Khác với:

  • Warning → vẫn chạy tiếp
  • Notice → vẫn chạy tiếp
  • Fatal Error → 💀 dừng luôn

Keyword SEO mạnh:

  • fatal error php
  • php fatal error
  • uncaught error php
  • php crashed
  • php stop execution

Ví dụ dễ hiểu nhất 😅

<?php

hello();

?>

Nhưng function:

hello()

không tồn tại.

👉 Kết quả:

Fatal error:
Call to undefined function hello()

PHP kiểu:

“Bạn gọi người này…
nhưng người này chưa từng tồn tại.” 🤡


Vì sao Fatal Error đáng sợ?

Vì:

👉 Code phía dưới KHÔNG chạy nữa.

Ví dụ:

<?php

echo "Bước 1";

hello();

echo "Bước 2";

?>

Kết quả:

Bước 1
Fatal error...

👉 "Bước 2" biến mất luôn 😅


Ví dụ đời thường 🚗

Việc "hiểu tâm lý", Warning nhẹ nhàng sẽ giống như:

“Xe gần hết xăng.”

Xe vẫn chạy.

Fatal Error giống như:

“Động cơ rớt xuống đường.” 🤡

👉 Đi tiếp bằng niềm tin.


7 loại Fatal Error phổ biến nhất 😵

❌ 1. Call to undefined function

Cực phổ biến cho người mới.

<?php

mysql_connect();

?>

Trong PHP mới:

mysql_connect()

đã bị xóa.

👉 Fatal Error.


❌ 2. Include/require lỗi

require "config.php";

Nhưng file không tồn tại.

👉 Crash luôn.

Khác với:

include

require nghiêm khắc hơn 😅


include vs require 😎

  • include → lỗi nhưng cố chạy tiếp
  • require → “Không có file à? Nghỉ.” 🤡

❌ 3. Memory exhausted

Ví dụ:

<?php

$arr = [];

while(true){
$arr[] = "hello";
}

?>

👉 RAM tăng mãi.

👉 PHP ngất.

👉 Fatal Error.

Thông báo thường thấy:

Allowed memory size exhausted

❌ 4. Maximum execution time exceeded

<?php

while(true){

}

?>

👉 Chạy mãi không xong.

👉 PHP timeout.

Ví dụ:

Fatal error:
Maximum execution time of 30 seconds exceeded

❌ 5. Class không tồn tại

<?php

$db = new Database();

?>

Nhưng chưa include class.

👉 Fatal Error.


❌ 6. Sai tên namespace

Laravel/Symfony gặp suốt 😅

use App\Service\MailService;

Nhưng file thật là:

Mailservice.php

👉 Windows chạy được.

👉 Linux host:
💀


❌ 7. Syntax lỗi nghiêm trọng

Ví dụ:

<?php

if($a > 5)

echo "Hello"

?>

Thiếu:

;

👉 Parse error / Fatal error.


Một điều cực kỳ quan trọng 😎

Fatal Error KHÔNG phải lúc nào cũng do “code dở”.

Nhiều khi:

  • thiếu file
  • upload thiếu folder
  • khác version PHP
  • extension chưa bật
  • Composer chưa install

👉 Và website “nổ tung” 😅


Ví dụ đau lòng "tức như...bò đá"

Localhost chạy ngon.

Upload host:

💀 Fatal Error.

Sau 3 tiếng debug…

Phát hiện host chạy:

PHP 7.4

Trong khi project dùng:

PHP 8.2

🤡


Fatal Error vs Warning vs Notice

LoạiChạy tiếp không?Mức độ
NoticeNhẹ
WarningTrung bình
Fatal ErrorKhông💀

Cách debug Fatal Error 😎

✅ 1. Đọc đúng dòng lỗi

Ví dụ:

Fatal error:
Call to undefined function hello()
in index.php on line 15

👉 Quan trọng nhất:

line 15

Không phải nhìn 500 dòng code 😅


✅ 2. Bật hiển thị lỗi

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

?>

Đây là “đèn pin” của PHP 😎


✅ 3. Xem Error Log

Hosting thường có:

  • Error Log
  • PHP Error Log

Rất nhiều lỗi thật ra nằm ở đây.


✅ 4. Kiểm tra version PHP

Cực nhiều website chết vì:

  • localhost PHP 8
  • host PHP 7

Hoặc ngược lại 😅


✅ 5. Kiểm tra Composer

Bạn upload project.

Quên upload:

vendor/

👉 Fatal Error ngay.


Ví dụ thực chiến 😅

Bạn clone project Laravel.

Mở lên.

💀

Fatal error:
vendor/autoload.php not found

Nguyên nhân?

👉 Chưa chạy:

composer install

Checklist “Fatal Error survival kit” 😎

Khi gặp Fatal Error:

  1. Đọc dòng lỗi.
  2. Xem line number.
  3. Kiểm tra include/require.
  4. Kiểm tra function/class tồn tại chưa.
  5. Kiểm tra version PHP.
  6. Kiểm tra Composer/vendor.
  7. Xem Error Log.

👉 80% case sẽ tìm ra 😅


Một sự thật "thú vị" 🤡

Người mới thường sợ Fatal Error.

Người có kinh nghiệm thì:

👉 “À, đọc lỗi thôi.”

Vì PHP thường… báo khá thẳng 😅


Tổng kết

Fatal Error là lỗi nghiêm trọng khiến PHP dừng chương trình ngay lập tức.

Nguyên nhân phổ biến:

  • undefined function
  • thiếu file
  • class không tồn tại
  • memory exhausted
  • timeout
  • version PHP lệch
  • upload thiếu vendor

👉 Kỹ năng quan trọng nhất:

Không hoảng 😎

Đọc lỗi từng dòng.


FAQ nhanh

Fatal Error có làm sập website không?

→ Có thể 😅

Nếu lỗi nằm ở:

  • index.php
  • config
  • autoload

thì toàn site có thể “bay màu”.


Fatal Error có phải bị hack?

→ Thường là không.

Đa số chỉ là bug/code lỗi 😅


Vì sao localhost chạy mà host bị Fatal Error?

→ Thường do:

  • khác version PHP
  • thiếu extension
  • Linux phân biệt hoa thường
  • upload thiếu file

Fatal Error có sửa khó không?

→ Thường dễ hơn bạn nghĩ 😎

Nhiều khi chỉ thiếu:

;

🤡


👉 Bạn có thể cũng đang gặp: