Tôi có một thư mục video trên máy chủ của mình có 755 quyền. Vấn đề là: Khi ai đó chuyển sang tải lên tệp video, nó không thể được tải lên thư mục đó vì lỗi cấp phép.
Nếu tôi thay đổi sự cho phép thành 777, thì video có thể được tải lên. Nhưng tôi không muốn cho phép thư mục cho phép 777 vì lý do bảo mật.
Có cách nào trong PHP để thay đổi tạm thời sự cho phép thành 777 trong khi tải lên video không?
Wasim
1.14611 Huy hiệu bạc25 Huy hiệu đồng11 silver badges25 bronze badges
Đã hỏi ngày 5 tháng 3 năm 2013 lúc 8:26Mar 5, 2013 at 8:26
Sumit Bijvanisumit BijvaniSumit Bijvani
8.07217 Huy hiệu vàng49 Huy hiệu bạc82 Huy hiệu đồng17 gold badges49 silver badges82 bronze badges
1
PHP cung cấp một chức năng, chmod[]
cho nhiệm vụ.
Cố gắng thay đổi chế độ của tệp được chỉ định thành chế độ được đưa ra trong chế độ.
Bạn có thể đặt nó trong một câu lệnh if
và nếu nó trả về sai, bạn có thể bỏ qua phần tải lên.
Việc sử dụng sẽ giống như
if[ chmod[$path, 0777] ] {
// more code
chmod[$path, 0755];
}
else
echo "Couldn't do it.";
Như được mô tả trong hướng dẫn chức năng CHMOD, $mode
phải ở định dạng bát phân - với số 0 hàng đầu, tức là chmod[$path, 0777]
Đã trả lời ngày 5 tháng 3 năm 2013 lúc 8:29Mar 5, 2013 at 8:29
hjpotter92hjpotter92hjpotter92
76.5K34 Huy hiệu vàng138 Huy hiệu bạc177 Huy hiệu đồng34 gold badges138 silver badges177 bronze badges
3
Có một cách [PHP cung cấp chức năng chmod
] nhưng vì PHP không phải là chủ sở hữu của thư mục, bạn sẽ không thể thay đổi quyền. Và tôi nghĩ rằng bạn đang giải quyết vấn đề sai. Thêm máy chủ web và PHP trong cùng một nhóm và đưa 775 vào thư mục.
Đã trả lời ngày 5 tháng 3 năm 2013 lúc 8:29Mar 5, 2013 at 8:29
3
76.5K34 Huy hiệu vàng138 Huy hiệu bạc177 Huy hiệu đồng
$config['remove_spaces'] = FALSE;
$config['upload_path'] = $path;
$this->upload->initialize[$config];
$this->load->library['upload', $config];
Có một cách [PHP cung cấp chức năng chmod
] nhưng vì PHP không phải là chủ sở hữu của thư mục, bạn sẽ không thể thay đổi quyền. Và tôi nghĩ rằng bạn đang giải quyết vấn đề sai. Thêm máy chủ web và PHP trong cùng một nhóm và đưa 775 vào thư mục.
Bạn phải khởi tạo cấu hình cho tải lên, như thế này:4 gold badges34 silver badges37 bronze badges
WilqDec 6, 2013 at 6:44
1
2.2364 Huy hiệu vàng34 Huy hiệu bạc37 Huy hiệu đồng
Đã trả lời ngày 6 tháng 12 năm 2013 lúc 6:44
Bạn có thể sử dụng chức năng chmod[]
.Mar 5, 2013 at 8:30
Để biết thêm thông tin, hãy thử ở đâyEdwin Alex
Đã trả lời ngày 5 tháng 3 năm 2013 lúc 8:304 gold badges27 silver badges49 bronze badges
Edwin Alexedwin Alex: You cannot undo the file permissions that are changed by the script below. Proceed with extreme caution.
5.0784 Huy hiệu vàng27 Huy hiệu bạc49 Huy hiệu đồng: this code should only be used if you remember to delete it immediately after use. As above, its use may put your site into an insecure state.
//replace dirname[__FILE__] with desired folder.
file_fix_directory[dirname[__FILE__]];
function file_fix_directory[$dir, $nomask = array['.', '..']] {
if [is_dir[$dir]] {
// Try to make each directory world writable.
if [@chmod[$dir, 0777]] {
echo "Made writable: " . $dir . "
";
}
}
if [is_dir[$dir] && $handle = opendir[$dir]] {
while [false !== [$file = readdir[$handle]]] {
if [!in_array[$file, $nomask] && $file[0] != '.'] {
if [is_dir["$dir/$file"]] {
// Recurse into subdirectories
file_fix_directory["$dir/$file", $nomask];
}
else {
$filename = "$dir/$file";
// Try to make each file world writable.
if [@chmod[$filename, 0666]] {
echo "Made writable: " . $filename . "
";
}
}
}
}
closedir[$handle];
}
}
CẢNH BÁO: Bạn không thể hoàn tác các quyền của tệp được thay đổi bởi tập lệnh bên dưới. Tiến hành với sự thận trọng cực độ.
Quan trọng: Mã này chỉ nên được sử dụng nếu bạn nhớ xóa nó ngay sau khi sử dụng. Như trên, việc sử dụng nó có thể đưa trang web của bạn vào trạng thái không an toàn.Hoặc bạn có thể sử dụng thiết bị đầu cuối cho điều nàyNov 21, 2021 at 16:09
chmod -R 755 public_html/test
Anjani BarnwalĐã trả lời ngày 21 tháng 11 năm 2021 lúc 16:091 gold badge15 silver badges22 bronze badges