Hàm rename() trong PHP

Hàm rename() trong PHP
Hàm rename() trong PHP

Chức năng của Hàm rename() trong PHP

Hàm rename() trong PHP dùng để đổi tên thư mục hoặc file, ngoài ra còn có thể di chuyển file từ thư mục này tới thư mục khác đồng thời có thể thay đổi tên file đó trong khi di chuyển.

Cú pháp của Hàm rename() trong PHP

$kết_quả = rename("đường_dẫn_file_hoặc_thư_mục_gốc)","đường_dẫn_file_hoặc_thư_mục_mới");

đường_dẫn_file_hoặc_thư_mục_gốc: Đường dẫn của file hoặc thư mục gốc cần đổi tên hoặc di chuyển (có thể làm cả 2)

đường_dẫn_file_hoặc_thư_mục_mới: Đường dẫn của file hoặc thư mục mới.

Nếu đường_dẫn_file_hoặc_thư_mục_gốc là file và đường_dẫn_file_hoặc_thư_mục_mới là file khác tên nhưng cùng thư mục thì thực hiện đổi tên file.

Nếu đường_dẫn_file_hoặc_thư_mục_gốc là file và đường_dẫn_file_hoặc_thư_mục_mới là file khác tên và khác thư mục thì thực hiện di chuyển đồng thời đổi tên file.

Nếu đường_dẫn_file_hoặc_thư_mục_gốc là file và đường_dẫn_file_hoặc_thư_mục_mới là file cùng tên và khác thư mục thì thực hiện di chuyển (nếu bên thư mục mới đã có file tên này thì thực hiện di chuyển và thay thế nội dung luôn).

Nếu đường_dẫn_file_hoặc_thư_mục_gốc là thư mục và đường_dẫn_file_hoặc_thư_mục_mới là thư mục khác tên và tên thư mục mới đó chưa tồn tại thì thực hiện đổi hoặc đồng thời di chuyển được (nếu tên thư mục mới đã tồn tại và có chứa file hoặc thư mục con thì không đổi tên được, nếu tên thư mục mới tồn tại và không có chứa file hoặc thư mục con thì đổi tên và thay thế thư mục mới được và đồng thời cũng di chuyển được).

$kết_quả:

Code Hàm rename() trong PHP

<?php
// Đổi tên thư mục
$thumuccu = "thumuctest/thumucmoi";
$thumucmoi = "thumuctest/thumuc2";
if(rename($thumuccu,$thumucmoi)){
	echo "$thumuccu đã đổi tên thành $thumucmoi<br>";
}else{
	echo "$thumuccu đổi tên không thành công<br>";
}
// Kết quả: thumuctest/thumucmoi đã đổi tên thành thumuctest/thumuc2

// Di chuyển và đổi tên thư mục
$filenguon = "thumuctest/3/";
$filedich = "thumucmoi/2/";
if(rename($filenguon,$filedich)){
	echo "$filenguon đã di chuyển và đổi tên thư mục đến $filedich<br>";	
}else{
	echo "$filenguon di chuyển và đổi tên thư mục thất bại<br>";
}
// Kết quả: thumuctest/3/ đã di chuyển và đổi tên thư mục đến thumucmoi/2/

// Đổi tên file
$filecu = "thumuctest/nhap.txt";
$filemoi = "thumuctest/test.txt";
if(rename($filecu,$filemoi)){
	echo "$filecu đã đổi tên thành $filemoi<br>";	
}else{
	echo "$filecu đổi tên không thành công<br>";
}
// Kết quả: thumuctest/nhap.txt đã đổi tên thành thumuctest/test.txt

// Di chuyển file
$filenguon = "thumuctest/filecu.txt";
$filedich = "thumucmoi/filecu.txt";
if(rename($filenguon,$filedich)){
	echo "$filenguon đã di chuyển thành công đến $filedich<br>";	
}else{
	echo "$filenguon di chuyển thất bại<br>";
}
// Kết quả: thumuctest/filecu.txt đã di chuyển thành công đến thumucmoi/filecu.txt

// Di chuyển file và đồng thời đổi tên file
$filenguon = "thumuctest/filecu2.txt";
// Đổi tên file sau khi di chuyển đến
$filedich = "thumucmoi/filemoi.txt";
if(rename($filenguon,$filedich)){
	echo "$filenguon đã di chuyển đến $filedich<br>";	
}else{
	echo "$filenguon di chuyển và đổi tên thất bại<br>";
}
// Kết quả: thumuctest/filecu2.txt đã di chuyển thành công và đồng thời đổi tên thành thumucmoi/filemoi.txt
?>

Kết quả:

thumuctest/thumucmoi đã đổi tên thành thumuctest/thumuc2

thumuctest/nhap.txt đã đổi tên thành thumuctest/test.txt

thumuctest/filecu.txt đã di chuyển thành công đến thumucmoi/filecu.txt

thumuctest/filecu2.txt đã di chuyển thành công và đồng thời đổi tên thành thumucmoi/filemoi.txt

Các trường hợp sử dụng hàm rename() trong PHP

Hàm rename() trong PHP có thể được sử dụng linh hoạt để thay đổi tên hoặc vị trí của file và thư mục. Tùy vào đường dẫn nguồn và đường dẫn đích, hàm có thể thực hiện việc đổi tên tại chỗ hoặc chuyển đối tượng sang một thư mục khác.

Đổi tên file bằng hàm rename()

Trường hợp phổ biến nhất là thay đổi tên file nhưng vẫn giữ nguyên thư mục chứa file. Cần truyền đường dẫn hiện tại vào tham số đầu tiên và tên mới vào tham số thứ hai.

<?php
rename("data/anh-cu.jpg", "data/anh-moi.jpg");
?>

Sau khi thực hiện thành công, file anh-cu.jpg sẽ được đổi thành anh-moi.jpg. Trước khi đổi tên, nên kiểm tra file nguồn có tồn tại và bảo đảm PHP có quyền ghi vào thư mục tương ứng.

Đổi tên thư mục bằng hàm rename()

rename() cũng có thể đổi tên thư mục. Cách thực hiện tương tự như với file, nhưng đường dẫn nguồn và đích sẽ trỏ đến thư mục cần thay đổi.

<?php
rename("uploads/anh-cu", "uploads/anh-moi");
?>

Thao tác này phù hợp khi cần thay đổi tên thư mục lưu trữ mà không muốn tạo một thư mục mới rồi di chuyển từng file bên trong. Nếu thư mục có dữ liệu, cần đặc biệt chú ý quyền truy cập và đường dẫn đích để tránh làm gián đoạn các liên kết đang sử dụng.

Di chuyển file sang thư mục khác bằng rename()

Một điểm đáng chú ý là rename() có thể đồng thời đổi tên và di chuyển file. Khi đường dẫn đích nằm ở thư mục khác, file sẽ được chuyển sang vị trí mới.

<?php
rename("uploads/anh.jpg", "images/anh.jpg");
?>

Trong ví dụ trên, file được chuyển từ thư mục uploads sang images nhưng vẫn giữ tên anh.jpg. Nếu muốn di chuyển và đổi tên cùng lúc, chỉ cần đặt tên mới trong đường dẫn đích.

<?php
rename("uploads/anh.jpg", "images/banner.jpg");
?>

Cách này hữu ích khi xây dựng hệ thống quản lý file, phân loại tài nguyên hoặc chuyển file sau khi hoàn tất một quy trình xử lý.

Đổi tên file khi xử lý upload trong PHP

Trong quá trình upload, file người dùng gửi lên có thể mang tên khó quản lý hoặc dễ bị trùng với file đã tồn tại. Sau khi file được lưu vào thư mục tạm, có thể dùng rename() để đưa file về tên hoặc vị trí phù hợp với quy ước của hệ thống.

<?php
$source = "uploads/" . $_FILES["file"]["name"];
$target = "uploads/tai-lieu-moi.pdf";

if (file_exists($source)) {
    rename($source, $target);
}
?>

Tuy nhiên, không nên lấy trực tiếp tên file do người dùng cung cấp để xây dựng đường dẫn trong ứng dụng thực tế. Nên kiểm tra phần mở rộng, chuẩn hóa tên file và kiểm soát đường dẫn trước khi thực hiện thao tác. Điều này giúp hạn chế lỗi xử lý file và tránh những rủi ro liên quan đến dữ liệu đầu vào.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm rename() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm rename() trong PHP
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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !