Website báo lỗi hết bộ nhớ, không tải lên được tệp lớn, hoặc chạy quá thời gian cho phép: cả ba đều sửa được bằng cách đổi một thiết lập PHP. Bài này nói cách làm trên DirectAdmin và các giá trị nên đặt.
1. Đường vào
Account Manager → PHP Settings.
Trang này hoạt động theo kiểu ghi đè từng thiết lập chứ không phải một bảng đầy đủ các ô. Phần Add New Override có hai ô:
| Ô | Nghĩa |
|---|---|
| Setting | Chọn tên thiết lập từ danh sách thả xuống |
| Value | Chọn hoặc nhập giá trị |
Bấm Add để thêm. Thiết lập nào không ghi đè thì giữ nguyên giá trị mặc định của máy chủ.
Cách này gọn hơn bản cũ: chỉ những gì quý Khách hàng cố ý đổi mới nằm trong danh sách, nên sau này nhìn lại biết ngay đã đổi gì.
2. Năm thiết lập hay cần đổi nhất
| Thiết lập | Dùng khi | Giá trị thường dùng |
|---|---|---|
memory_limit |
Lỗi Allowed memory size exhausted |
256M, website nặng thì 512M |
upload_max_filesize |
Không tải lên được tệp lớn | 64M hoặc hơn, tuỳ nhu cầu |
post_max_size |
Đi kèm ô trên | Phải lớn hơn hoặc bằng upload_max_filesize |
max_execution_time |
Trang chạy lâu bị cắt giữa chừng | 120 hoặc 300 giây |
display_errors |
Cần xem lỗi khi đang phát triển | On khi thử, Off khi chạy thật |
upload_max_filesize và post_max_size đi với nhau
Đây là cặp hay bị sửa thiếu một nửa.
Tăng upload_max_filesize lên 64M mà để post_max_size ở 8M thì vẫn không tải lên được tệp 20M, vì toàn bộ dữ liệu gửi lên bị giới hạn bởi ô thứ hai.
Quy tắc: post_max_size lớn hơn upload_max_filesize một chút, vì ngoài tệp còn có các trường khác trong biểu mẫu.
display_errors phải tắt trên website chạy thật
Bật display_errors trên website đang phục vụ khách là in thông báo lỗi ra màn hình cho mọi người đọc. Thông báo lỗi PHP thường kèm đường dẫn đầy đủ trên máy chủ, đôi khi cả tên cơ sở dữ liệu và tên người dùng.
Đó là thông tin có giá trị với người muốn tấn công website.
Cần xem lỗi trên website đang chạy thì đọc nhật ký lỗi thay vì bật hiển thị, xem bài về thống kê và nhật ký trong cùng chuyên mục.
3. Đổi phiên bản PHP
Trang PHP Settings dùng để đổi thiết lập, không phải đổi phiên bản.
Chọn phiên bản PHP nằm ở phần cấu hình của từng tên miền. Nếu không thấy, nghĩa là gói hosting của quý Khách hàng chỉ chạy một phiên bản, hoặc việc đổi do Cloudzone làm; nhắn qua khung chat là được.
⚠️ Đổi phiên bản PHP là việc có rủi ro. Mã nguồn cũ có thể không chạy trên PHP mới, và website trắng ngay sau khi đổi. Nên:
- Sao lưu trước.
- Đổi vào giờ ít người truy cập.
- Mở website lên kiểm ngay, cả trang chủ lẫn vài trang bên trong lẫn trang quản trị.
- Có vấn đề thì đổi về phiên bản cũ ngay, rồi tìm nguyên nhân sau.
Đừng để website chạy trên phiên bản PHP đã hết hỗ trợ. Phiên bản hết hỗ trợ không nhận bản vá bảo mật nữa, và đó là con đường bị chiếm phổ biến.
4. Kiểm thiết lập đã ăn chưa
Đổi xong, kiểm bằng cách tạo một tệp trong thư mục web:
<?php phpinfo();
Lưu thành kiem-php.php trong domains/<ten-mien>/public_html, mở https://<ten-mien>/kiem-php.php, rồi tìm tên thiết lập trong trang.
⚠️ Xoá tệp đó ngay sau khi xem xong. phpinfo() in ra rất nhiều thông tin về máy chủ: đường dẫn, phần mở rộng đang bật, phiên bản thư viện. Để quên một tệp như vậy trên website công khai là đưa sẵn bản đồ cho người muốn tấn công.
Cách an toàn hơn nếu website là WordPress: dùng mục Site Health → Info có sẵn trong trang quản trị, không phải tạo tệp nào.
5. Thiết lập đổi mà website vẫn báo lỗi cũ
Ba nguyên nhân, theo thứ tự hay gặp:
| Nguyên nhân | Cách xử lý |
|---|---|
Website có tệp .htaccess hoặc php.ini riêng đang ghi đè lại |
Tìm và sửa ở đó, hoặc bỏ dòng đó đi |
| Phần mềm website có giới hạn riêng của nó | Ví dụ WordPress có WP_MEMORY_LIMIT trong wp-config.php |
| Thiết lập này không cho phép ghi đè ở mức người dùng | Nhắn cho Cloudzone |
Nguyên nhân thứ hai hay bị bỏ qua: tăng memory_limit ở DirectAdmin mà WordPress vẫn báo hết bộ nhớ, vì chính WordPress đang tự giới hạn mình thấp hơn.
6. Việc nên làm sau khi đổi
| Việc | Vì sao |
|---|---|
| Ghi lại đã đổi gì, ngày nào, vì sao | Sáu tháng sau không ai nhớ vì sao max_execution_time là 300 |
Kiểm display_errors đang là Off |
Đây là thiết lập dễ bật lúc sửa lỗi rồi quên tắt |
| Mở lại website và vài trang bên trong | Thiết lập PHP đổi có thể ảnh hưởng chỗ không ngờ |
7. Khi cần hỗ trợ
Quý Khách hàng không tìm thấy thiết lập cần đổi trong danh sách, hoặc đổi rồi mà không ăn, hãy nhắn qua khung chat ở góc phải màn hình kèm: tên thiết lập, giá trị muốn đặt, và nguyên văn thông báo lỗi của website.
Thông báo lỗi thường chỉ thẳng ra thiết lập nào đang chặn, nhanh hơn là đoán.