Thứ Hai, 11 tháng 5, 2026

Include và Require trong PHP khác nhau thế nào? Nhìn giống nhau, nhưng lúc lỗi thì "tính cách" khác hẳn

Lập trình nói chung và PHP nói riêng, việc chúng ta "dùng chùa" những thứ có sẵn là "chuyện thường ngày ở huyện". Lúc nào, ngôn ngữ nào...chúng ta cũng đều có nhu cầu sử dụng những thư viện có sẵn.


Mỗi ngôn ngữ có "từ khóa" riêng để "kêu gọi" những "tài nguyên" đó. Nếu bạn mới học PHP, sớm muộn gì cũng gặp hai "anh em song sinh" Include và Require:


include "config.php";


và


require "config.php";


Nhìn qua thì có vẻ giống nhau, một kiểu "kêu gọi đồng bọn".


Bạn có thể nghĩ:

"Chắc khác nhau gì mỗi… cách viết cho vui?" 


Không đâu 

  • Khi mọi thứ hoạt động bình thường, chúng gần như giống nhau.
  • Nhưng khi file bị thiếu hoặc sai đường dẫn…tính cách của hai anh này khác nhau hoàn toàn.


Trong PHP:

include sẽ báo warning nếu file không tồn tại, nhưng chương trình vẫn tiếp tục chạy.

require sẽ báo fatal error và dừng chương trình ngay lập tức.



Ví dụ thực tế...ăn uống


Hãy tưởng tượng sau vài giờ "vật vã" với PHP, đói bụng, bạn chuẩn bị nấu mì gói.


Bạn cần:

  • nước sôi
  • mì
  • gói gia vị


include giống như…

  • Bạn quên gói gia vị.
  • Vẫn có thể ăn được.
  • Chỉ là… hơi nhạt 


require giống như…

  • Bạn quên… mì.


Không có mì thì nấu cái gì nữa? Nghỉ...không mì miếc gì nữa!


PHP sẽ:

"Dừng chương trình ngay lập tức!"



Include là gì?


include "header.php";

PHP sẽ chèn nội dung của header.php vào vị trí đó.


Nếu file không tồn tại:

PHP báo warning

nhưng chương trình vẫn chạy tiếp


Ví dụ

include "abc.php";

echo "Hello World";


Nếu abc.php không tồn tại, kết quả sẽ là:

Warning: include(abc.php): Failed to open stream...

Hello World


Dù lỗi, dòng "Hello World" vẫn được in ra.



Require là gì?


require "config.php";


Nếu file không tồn tại:

  • PHP báo fatal error
  • chương trình dừng ngay


Ví dụ

require "abc.php";

echo "Hello World";


Kết quả:

Fatal error: Failed opening required 'abc.php'

"Hello World" sẽ không bao giờ xuất hiện. PHP vô cùng "bực bội": cái "ông" abc.php là ông nào, tôi đâu có biết!



So sánh nhanh


Tình huống                       include                                  require


File tồn tại               Chạy bình thường                 Chạy bình thường

File không tồn tại       Warning, vẫn chạy tiếp        Fatal error, dừng ngay



Khi nào dùng include?


Dùng khi file đó không quá quan trọng.


Ví dụ:

  • banner quảng cáo
  • sidebar
  • footer
  • thống kê lượt xem


Thêm "hương hoa" cho đời thêm tươi. Nếu thiếu cũng không đến nỗi "tận thế".



Khi nào dùng require?


Dùng khi file đó bắt buộc phải có.


Ví dụ:

  • config.php
  • file kết nối database
  • file chứa hàm quan trọng
  • file kiểm tra đăng nhập


Nếu thiếu các file này, chương trình không thể hoạt động bình thường.



Ví dụ thực tế với website PHP


require "config.php";

include "header.php";

include "sidebar.php";

include "footer.php";


config.php là "trái tim".

Thiếu nó → dừng ngay.


header.php, footer.php chỉ là "trang trí".

Thiếu thì vẫn có thể sống sót 



Include_once và Require_once


PHP còn có:

include_once "functions.php";

require_once "config.php";


Chúng chỉ nạp file một lần duy nhất.


Rất hữu ích để tránh lỗi:

Cannot redeclare function...

 


Ví dụ thực tế


Bạn mời bạn thân đi ăn nhà hàng.


include: khăn giấy hay trà đá, lỡ gọi hai lần cũng không sao 

include_once: kiểu như tôm hùm hay cua hoàng đê, gọi một lần là đủ, đỡ tốn tiền 


Code mẫu thực tế

config.php

<?php



$conn = mysqli_connect("localhost", "user", "pass", "db");



?>



index.php

<?php



require "config.php";

echo "Website hoạt động bình thường";



?>


Nếu config.php bị thiếu:

chương trình dừng ngay.

Điều này hoàn toàn hợp lý.



Checklist lựa chọn nhanh


Mỗi khi "vọc" PHP, chúng ta nên hỏi bản thân:

"Nếu file này bị thiếu, website có nên dừng luôn không?"


Nếu CÓ → dùng require

Nếu KHÔNG → dùng include



Một sự thật hơi "đau cái lòng"


Rất nhiều newbie dùng:

include "config.php";


Sau đó file config.php bị thiếu.

Website vẫn chạy.


Nhưng:

  • database không kết nối
  • query không chạy
  • dữ liệu trống trơn


Bạn debug 2 tiếng.


Cuối cùng phát hiện:

"Ồ… config.php chưa được nạp." 



Tổng kết


include → lỗi nhưng vẫn chạy tiếp

require → lỗi là dừng ngay


Quy tắc đơn giản:

File quan trọng → require

File phụ trợ → include



FAQ nhanh


Include và require có ảnh hưởng tốc độ không?

Gần như không đáng kể.


Nên dùng require hay include cho config.php?

require_once.


Nên dùng _once không?

Có, đặc biệt cho:

  • config
  • functions
  • classes



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

Session không hoạt động

Header already sent

MySQL không connect

Undefined index