Hàm file_put_contents() trong PHP
Trần Thị Vân
- 1226
- 06/08/2025
Chức năng của Hàm file_put_contents() trong PHP
Hàm file_put_contents() trong PHP dùng để ghi nội dung vào file, nếu file chưa tồn tại thì sẽ tạo mới file rồi ghi, hơn nữa còn có trường hợp cho phép nối nội dung vào phía sau nội dung của file, mặc định thì ghi đè file.
Cú pháp của Hàm file_put_contents() trong PHP
file_put_contents($đường_dẫn_đến_file,$biến_chứa_nội_dung);
$đường_dẫn_đến_file: Đường dẫn đến file cần ghi, nếu file chưa tồn tại thì tạo mới (Ví dụ: tmp_file.php).
$biến_chứa_nội_dung: Biến chứa nội dung cần ghi vào file.
Code Hàm file_put_contents() trong PHP
Code ghi đè Hàm file_put_contents() trong PHP
<?php
$code = "Hàm file_put_contents() trong PHP";
$tmpFile = "tmp_".uniqid().'.php';
if(file_put_contents($tmpFile,$code)!== false){
echo "Đã ghi xong!";
}else{
echo "Ghi lỗi!";
}
fclose($tmpFile);
?>
Kết quả:
Đã ghi xong!
Kết quả được ghi trong file:
Hàm file_put_contents() trong PHP
Nội dung trong file sẽ được cập nhật mới toàn bộ.
Code Nối thêm Hàm file_put_contents() trong PHP
Nội dung của file trước khi ghi nối:
Hàm file_put_contents() trong PHP
Code:
<?php
$code = ". Nội dung nối thêm FILE_APPEND.";
$tmpFile = 'tmp_6892cdfb41e1c.php';
if(file_put_contents($tmpFile,$code,FILE_APPEND)!== false){
echo "Đã ghi và nối xong!";
}else{
echo "Ghi và nối lỗi!";
}
fclose($tmpFile);
?>
Kết quả:
Đã ghi và nối xong!
Kết quả trong file sau khi ghi nối:
Hàm file_put_contents() trong PHP. Nội dung nối thêm FILE_APPEND.
file_put_contents($tmpFile,$code,FILE_APPEND);
Thêm FILE_APPEND vào hàm file_put_contents để ghi và nối nội dung vào phía sau của file.
# Những lưu ý khi sử dụng hàm file_put_contents() trong PHP
Những lưu ý khi sử dụng hàm file_put_contents() trong PHP
Khi sử dụng file_put_contents(), việc ghi được dữ liệu vào file chưa phải là yếu tố duy nhất cần quan tâm. Đường dẫn, quyền truy cập và cách xử lý kết quả trả về đều có thể ảnh hưởng đến độ ổn định của chương trình. Kiểm tra các yếu tố này ngay từ đầu sẽ giúp hạn chế lỗi khi đưa mã PHP lên môi trường thực tế.
Kiểm tra kết quả trả về khi ghi file
file_put_contents() trả về số byte đã được ghi nếu thao tác thành công. Nếu không thể ghi dữ liệu, hàm có thể trả về false. Vì vậy, không nên mặc định rằng lệnh ghi file luôn thành công chỉ vì mã PHP không dừng chương trình ngay lập tức.
<?php
$result = file_put_contents("data.txt", "Nội dung mới");
if ($result === false) {
echo "Không thể ghi file.";
} else {
echo "Đã ghi {$result} byte.";
}
?>
Nên dùng phép so sánh nghiêm ngặt === false khi kiểm tra lỗi. Cách này phân biệt rõ trường hợp hàm trả về false với một giá trị số hợp lệ, giúp việc xử lý lỗi chính xác hơn.
Xử lý quyền truy cập và đường dẫn khi ghi file
Một nguyên nhân phổ biến khiến thao tác ghi thất bại là PHP không có quyền ghi vào thư mục hoặc file đích. Ngoài ra, đường dẫn tương đối có thể trỏ đến vị trí khác với dự kiến tùy vào thư mục làm việc của chương trình.
Khi xây dựng ứng dụng, nên xác định đường dẫn một cách rõ ràng và đảm bảo thư mục đích đã tồn tại. Nếu ứng dụng cần tạo file trong một thư mục riêng, thư mục đó cũng phải được cấu hình quyền ghi phù hợp với tài khoản mà máy chủ web sử dụng.
Không nên tùy tiện cấp quyền ghi rộng cho toàn bộ thư mục chỉ để khắc phục lỗi. Quyền quá rộng có thể làm tăng rủi ro bảo mật, đặc biệt với những thư mục chứa dữ liệu do người dùng cung cấp.
Phân biệt ghi đè và ghi nối nội dung bằng FILE_APPEND
Nếu không truyền tùy chọn FILE_APPEND, dữ liệu mới có thể thay thế nội dung hiện có của file. Ngược lại, sử dụng FILE_APPEND sẽ đưa dữ liệu mới vào cuối file thay vì xóa nội dung cũ.
<?php
file_put_contents("log.txt", "Lần ghi mới\n", FILE_APPEND);
?>
Cần lựa chọn đúng cách ghi dựa trên mục đích sử dụng. Với file cấu hình hoặc nội dung cần cập nhật toàn bộ, ghi đè thường phù hợp hơn. Với file nhật ký, danh sách sự kiện hoặc dữ liệu cần lưu tiếp vào cuối file, FILE_APPEND sẽ thích hợp hơn.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm file_put_contents() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *