Sau khi upload source code PHP lên hosting, nhiều người gặp tình trạng website chỉ hiển thị một màn hình trắng, không có nội dung hoặc thông báo lỗi. Đây thường là lỗi PHP không thể thực thi source code nhưng thông báo lỗi đang bị ẩn.
Nguyên nhân có thể liên quan đến phiên bản PHP, lỗi cú pháp, database, extension, thư viện hoặc cấu hình hosting. Bài viết dưới đây hướng dẫn cách kiểm tra và khắc phục theo từng bước.
1. Kiểm tra PHP Error Log
Đây là bước nên thực hiện đầu tiên khi website bị trắng trang. Error Log có thể cho biết file PHP nào đang gặp lỗi và nguyên nhân cụ thể.
Trên nhiều hosting sử dụng cPanel, bạn có thể tìm các mục như Error Log, Errors hoặc Logs. Tên chức năng có thể khác nhau tùy nhà cung cấp hosting.
Một số lỗi thường gặp:
PHP Parse error: syntax error...
PHP Fatal error: Uncaught Error...
Nếu cần kiểm tra trong môi trường thử nghiệm, bạn có thể tạo file PHP tạm thời:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
Không nên bật hiển thị lỗi chi tiết lâu dài trên website chính thức vì thông báo lỗi có thể tiết lộ thông tin về hệ thống.
2. Kiểm tra phiên bản PHP
Source code cũ có thể không tương thích với phiên bản PHP đang chạy trên hosting.
Nếu sử dụng cPanel, hãy kiểm tra các mục như:
- MultiPHP Manager.
- Select PHP Version.
- PHP Selector.
Hãy xem tài liệu của source để biết phiên bản PHP được yêu cầu. Nếu không có thông tin, hãy dựa vào thông báo trong Error Log để xác định vấn đề tương thích.
3. Kiểm tra lỗi cú pháp và PHP Extension
Một lỗi cú pháp trong PHP hoặc việc thiếu extension cần thiết cũng có thể khiến website không thể chạy.
Ví dụ lỗi cú pháp:
<?php
$name = "Chiasecode"
echo $name;
?>
Đoạn code trên thiếu dấu chấm phẩy. Cách viết đúng:
<?php
$name = "Chiasecode";
echo $name;
?>
Ngoài ra, source có thể yêu cầu các extension như:
- mysqli hoặc PDO.
- mbstring.
- curl.
- openssl.
- fileinfo.
- gd.
Nếu Error Log báo undefined function hoặc lỗi liên quan đến extension, hãy kiểm tra và bật extension tương ứng trong phần quản lý PHP của hosting.
4. Kiểm tra database MySQL
Nếu source sử dụng MySQL, hãy kiểm tra lại thông tin kết nối database trong file cấu hình.
Các thông tin cần kiểm tra gồm:
- Tên database.
- Tên user.
- Mật khẩu.
- Database host.
- Quyền của user đối với database.
Ví dụ:
$host = "localhost";
$dbname = "ten_database";
$username = "ten_user";
$password = "mat_khau";
$conn = new mysqli($host, $username, $password, $dbname);
Nếu source đi kèm file SQL, bạn cũng cần tạo database trên hosting và import dữ liệu thông qua phpMyAdmin hoặc công cụ tương ứng.
5. Kiểm tra Composer và thư viện của source
Một số dự án PHP sử dụng Composer để quản lý thư viện. Nếu source có file:
composer.json
hãy kiểm tra xem dự án có yêu cầu cài đặt dependency hay không.
Nếu thiếu thư mục vendor, website có thể xuất hiện lỗi tương tự:
Failed opening required 'vendor/autoload.php'
Trong trường hợp này, hãy thực hiện đúng quy trình cài đặt Composer được hướng dẫn bởi tác giả source.
6. Kiểm tra cấu trúc thư mục và file index
Sau khi upload, hãy kiểm tra source có nằm đúng thư mục mà domain đang trỏ tới hay không.
Ví dụ với nhiều hosting, website chính sử dụng:
public_html
Nếu source bị đặt nhầm vào:
public_html/source-code/
trong khi domain lại trỏ trực tiếp tới public_html, website có thể không tìm thấy file khởi chạy.
Hãy kiểm tra sự tồn tại của:
index.php
Đối với Laravel hoặc các framework PHP khác, document root có thể cần trỏ tới một thư mục riêng như public theo yêu cầu của framework.
7. Kiểm tra file .htaccess và quyền truy cập
Nếu source sử dụng Apache, file .htaccess có thể chứa các quy tắc rewrite URL. Cấu hình không phù hợp có thể gây lỗi sau khi chuyển source từ localhost lên hosting.
Hãy sao lưu `.htaccess` trước khi chỉnh sửa và kiểm tra cấu hình theo tài liệu của source.
Đồng thời kiểm tra quyền file và thư mục. Trên nhiều hosting Linux, thiết lập phổ biến là:
- File: 644.
- Thư mục: 755.
Không nên đặt quyền 777 cho toàn bộ website chỉ để thử sửa lỗi.
8. Kiểm tra giới hạn tài nguyên PHP
Nếu Error Log xuất hiện thông báo:
Allowed memory size exhausted
thì website có thể đang sử dụng nhiều bộ nhớ hơn giới hạn PHP được cấp.
Hãy kiểm tra các thông số như memory_limit trong phần quản lý PHP của hosting. Nếu hosting không cho phép tự thay đổi giới hạn, bạn có thể liên hệ nhà cung cấp để được hỗ trợ.
9. Quy trình xử lý lỗi trắng trang
Để tránh sửa sai nhiều thứ cùng lúc, bạn có thể thực hiện theo thứ tự:
- Kiểm tra Error Log.
- Kiểm tra phiên bản PHP.
- Kiểm tra cú pháp và extension.
- Kiểm tra database và file SQL.
- Kiểm tra Composer nếu source sử dụng thư viện.
- Kiểm tra cấu trúc thư mục và file index.
- Kiểm tra `.htaccess` và quyền file.
- Kiểm tra giới hạn tài nguyên PHP.
10. Một số lỗi thường gặp
| Lỗi | Nguyên nhân có thể gặp | Cách kiểm tra |
|---|---|---|
| Trang trắng | PHP Fatal Error | Kiểm tra Error Log |
| Parse error | Lỗi cú pháp PHP | Kiểm tra file và dòng được báo |
| Undefined function | Thiếu PHP Extension | Kiểm tra extension |
| Database connection failed | Sai thông tin MySQL | Kiểm tra database và user |
| Class not found | Thiếu thư viện | Kiểm tra Composer/vendor |
| Memory exhausted | Thiếu PHP memory | Kiểm tra memory_limit |
11. Những điều không nên làm
- Không xóa toàn bộ source khi chưa sao lưu.
- Không xóa database khi chưa có bản backup.
- Không đặt quyền 777 cho toàn bộ website.
- Không đổi PHP version liên tục mà không kiểm tra Error Log.
- Không công khai mật khẩu hoặc thông tin database.
- Không để hiển thị lỗi PHP chi tiết trên website chính thức.
12. Kết luận
Lỗi PHP trắng trang sau khi upload source lên hosting có thể xuất phát từ nhiều nguyên nhân khác nhau. Thay vì upload lại source nhiều lần, bạn nên bắt đầu bằng việc kiểm tra Error Log, sau đó lần lượt kiểm tra PHP version, extension, database, thư viện và cấu trúc source.
Khi xác định được lỗi cụ thể, việc khắc phục sẽ nhanh và chính xác hơn. Đây cũng là quy trình hữu ích khi triển khai các website PHP từ môi trường localhost lên hosting thực tế.
