Bạn là người ham học hỏi, thường xuyên "ra tay nghĩa hiệp" khắc phục những lỗi thông thường của các máy tính Dell, HP của bạn bè, anh chị em trong nhà...Một ngày đẹp trời, một người bạn đưa cho bạn một con iMac 24" nhờ bạn "phẫu thuật". Bạn ngơ ngác nhìn con iMac...vừa lạ vừa quen...không biết phải bắt đầu từ đâu?!
Có một câu chuyện.
Mà gần như ai học PHP cũng từng gặp.
Ở nhà.
Dùng:
✔ XAMPP
✔ Laragon
✔ WAMP
↓
Website chạy ngon.
😎
Upload lên InfinityFree.
...
Trang trắng.
😭
Hoặc.
Warning: Failed to open stream...
Fatal error: Failed opening required...Hoặc.
404 Not FoundHoặc.
Ảnh biến mất.
CSS biến mất.
JavaScript biến mất.
🤡
Bạn bắt đầu nghĩ.
"Host lỗi."
"PHP lỗi."
"Linux khó tính."
😅
Thực ra...
Linux không hề khó tính.
Nó chỉ...
Làm đúng những gì bạn viết.
😄
Vì sao Windows chạy nhưng Linux lại lỗi?
Phần lớn máy tính cá nhân chạy Windows, trong khi đa số hosting sử dụng Linux.
Hai hệ điều hành này có nhiều khác biệt như:
- Phân biệt chữ hoa và chữ thường trong tên file
- Đường dẫn thư mục
- Quyền truy cập (Permissions)
- Ký tự xuống dòng
- Cấu hình môi trường
Đây là nguyên nhân khiến website chạy tốt trên Windows nhưng gặp lỗi sau khi upload lên hosting Linux.
Ví dụ đời thường 🚪
Bạn có hai người bạn.
Một người rất "dễ tính".
😄
Bạn viết:
Nam.
NAM.
nam.
NaM.
...
Người đó đều vui vẻ.
Một người khác.
Rất nguyên tắc.
😎
Bạn viết:
Nam.
↓
Đúng.
Bạn viết:
NAM.
↓
Không ...vui.
Linux chính là người thứ hai.
Khác biệt số 1: Chữ hoa và chữ thường 😭
Đây là lỗi số một.
Ví dụ.
Tên file thật là:
config.phpNhưng bạn viết:
include "Config.php";Windows.
😄
"Ờ.
Ý nó là config.php."
↓
Chạy.
Linux.
😎
"Không.
Config.php không tồn tại."
↓
Lỗi.
Đây là lỗi phổ biến nhất.
Thêm một ví dụ 😅
Thư mục thật:
imagesCode:
<img src="Images/logo.png">Windows.
Hiện ảnh.
😄
Linux.
😭
Chỉ khác.
Một chữ:
I
viết hoa.
Khác biệt số 2: Dấu gạch chéo
Windows quen dùng:
\Ví dụ.
C:\xampp\htdocsLinux dùng:
/Ví dụ.
/home/public_htmlTrong PHP.
Nên dùng:
include "config/database.php";Thay vì cố ghép đường dẫn theo kiểu Windows.
Khác biệt số 3: File Permissions 🔒
Windows.
Bạn gần như có toàn quyền.
😄
Linux.
Không.
Ví dụ.
PHP muốn ghi file.
file_put_contents(...)Hosting trả lời.
Permission denied😭
Không phải code sai.
Mà thư mục chưa được cấp quyền ghi.
Khác biệt số 4: Thực thi file
Ở Windows.
Một số file.
Có thể chạy ngay.
Linux.
Muốn chạy.
Phải có quyền:
ExecutableĐiều này thường gặp khi làm việc với:
Shell Script
Python
Node.js
Cron Job
Khác biệt số 5: Ký tự xuống dòng
Đây là lỗi ít gặp hơn.
Windows dùng:
CRLFLinux dùng:
LFĐa số IDE hiện nay xử lý tốt.
Nhưng đôi khi.
Một số script.
Hoặc shell file.
Có thể lỗi chỉ vì khác ký tự xuống dòng.
InfinityFree Case 😅
Có bạn gửi mình project.
Trang chủ chạy.
😄
Nhưng.
Trang đăng nhập.
Sau khoảng:
3 phút.
Mình phát hiện.
Tên file thật.
Login.phpLink.
login.phpWindows.
Không sao.
Linux.
Không tha.
🤡
Đổi đúng tên.
Website chạy ngay.
Composer và Autoload
Nếu sau này học Laravel.
Hoặc Composer.
Bạn sẽ càng thấy rõ.
Ví dụ.
Class tên:
UserControllerNhưng file:
usercontroller.phpWindows.
Có thể vẫn chạy.
Linux.
Rất dễ lỗi.
Cho nên.
Ngay từ bây giờ.
Hãy tập đặt tên thật nhất quán.
Một hiểu lầm rất phổ biến 🤡
Nhiều người nghĩ.
Linux khó.
Không.
😄
Linux chỉ nghiêm túc hơn.
Windows thường:
"Cũng được."
Linux:
"Không đúng.
Là không chạy."
Và điều thú vị là.
Nhờ sự "khó tính" đó.
Bạn sẽ viết code chuẩn hơn.
Một mẹo cực hay 😎
Trước khi upload.
Hãy kiểm tra:
✔ Có file nào viết sai chữ hoa không?
✔ Có include sai tên file không?
✔ Có dùng đường dẫn Windows không?
✔ Có thư mục cần quyền ghi không?
Làm được bốn điều này.
Bạn sẽ tránh được rất nhiều lỗi.
Debug kiểu dev thật 😎
✅ 1. Đặt tên file nhất quán
Ví dụ.
Toàn bộ dùng:
login.phpHoặc.
LoginController.phpĐừng lúc hoa.
Lúc thường.
✅ 2. Kiểm tra từng include
Sai một ký tự.
Linux cũng không bỏ qua.
✅ 3. Đọc Error Log
Linux thường báo rất rõ.
Thiếu file nào.
Sai đường dẫn nào.
✅ 4. Không hard-code đường dẫn Windows
Hãy dùng đường dẫn tương đối hoặc hằng số phù hợp.
✅ 5. Test trên hosting sớm
Đừng đợi viết xong 5.000 dòng mới upload.
😄
Checklist chuẩn không cần chỉnh 😎
☑ Kiểm tra chữ hoa/chữ thường
☑ Kiểm tra đường dẫn
☑ Kiểm tra quyền ghi file
☑ Đọc Error Log
☑ Đặt tên file thống nhất
☑ Upload và test thường xuyên
FAQ nhanh
Vì sao Windows chạy mà Linux lỗi?
→ Vì Windows thường không phân biệt chữ hoa/chữ thường trong tên file, còn Linux thì có.
Linux có tốt hơn Windows để chạy web không?
→ Phần lớn hosting hiện nay sử dụng Linux vì ổn định, phổ biến và phù hợp với nhiều web server.
Có nên đổi hết tên file sang chữ thường?
→ Đây là thói quen rất tốt để giảm nhầm lẫn.
InfinityFree dùng Windows hay Linux?
→ InfinityFree sử dụng máy chủ Linux, nên các quy tắc về phân biệt chữ hoa/chữ thường đều được áp dụng.
Bạn có thể cũng đang gặp 😭
👉 localhost vs hosting khác nhau thế nào?
👉 White Screen of Death – Trang trắng xóa không báo lỗi
👉 Fatal Error trong PHP là gì?
👉 Call to undefined function là gì?
👉 Cache là gì? (Vì sao sửa code rồi mà website vẫn không thay đổi?)
👉 Session vs Cookie - Hai anh em dễ nhầm nhất của PHP
👉 Backup database đúng cách trước khi "toang"
Tổng kết
Windows giống như một người thầy rất hiền.
Bạn viết sai một chút.
Thầy vẫn hiểu.
Vẫn cho qua.
😄
Linux thì khác.
Nó giống như giám khảo trong phòng thi.
Đề ghi:
config.php
Bạn nộp:
Config.php
↓
Sai.
Không có điểm thưởng.
Không có "thông cảm".
Ban đầu.
Điều này khiến rất nhiều người khó chịu.
Nhưng sau một thời gian.
Bạn sẽ nhận ra.
Chính sự "khó tính" của Linux giúp bạn hình thành những thói quen lập trình tốt hơn:
Đặt tên file nhất quán.
Viết đường dẫn chính xác.
Không phụ thuộc vào "máy mình chạy".
Đó cũng là lý do vì sao phần lớn website trên Internet đều chạy trên Linux.
Và nếu bạn chỉ nhớ một điều từ bài này, hãy nhớ:
Nếu code chỉ chạy trên máy bạn... thì đó chưa phải là code tốt.
Code tốt là code chạy đúng trên mọi môi trường chuẩn. 🚀