ลบไฟล์ไม่ได้ใน FTP

เริ่มโพสต์โดย ooooo, 01 มี.ค. 2006, 07:46 น.

0 สมาชิก และ 1 บุคคลทั่วไป กำลังเปิดอ่านโพสต์นี้

ooooo

สมมุตินะครับสมมุติ

หลังจากที่ผมอัพโหลดไฟล์จำนวนหนึ่งไปเรียบร้อยแล้ว
โดยที่ได้ทำเว็บจำนวนหนึ่งเกือบเสร็จแล้ว (เป็น php ใช้ mysql)
แต่วันดีคืนดีผมจะลบมันออก มันเสือกดื้อ ไม่ให้ลบซะนี่

โดยมันมี error ขึ้นว่า

COMMAND:>   LIST
STATUS:>     Connecting FTP data socket XX.XXX.XX.XX:XXXXX...
      150 Opening ASCII mode data connection for file list
      226-Transfer complete.
      226 Quotas off
COMMAND:>   CWD /httpdocs/files/images
      550 /httpdocs/files/images: Permission denied
ERROR:>      Requested action not taken (e.g., file or directory not found, no access).

มันจะลบได้ไหมครับ แล้วมันเกิดจากอะไร คือปล่อยไว้งั้นมันรำคาญลูกกะตาน่ะครับ

ขอบคุณครับ

นายโอ้เอ้

เราไม่มีสิทธิ์ที่จะลบมันครับ เพราะ

เราไม่ใชเจ้าของไฟล์ (file owner) ไฟล์บางอย่างที่สร้างชึ้นมาด้วย script
เจ้าของไฟล์จะเป็น nobody หรือ apache เราจึงไม่มีสิทธิ์ที่จะไปลบไฟล์ของเขา
นอกเสียแต่ว่า premission จะกำหนดให้เรามีสิทธิ์ r (read) w (write) x (execute)

วิธีการตรวจสอบ
- ดู file owner เป็นของใคร ซึงจะบอกเป็น user/group
- ดู file permission ว่ากำหนดไว้ยังไง


ท้ายที่สุดหากหมดหวังเพราะว่าเราไม่ใช่เจ้าของไฟล์ชัวร์ๆ
ก็ต้องให้เจ้าของทำการลบ
ถ้าเป็น apache ก็ใช้ script ลบเอา

ok มั้ยครับ
Today you , Tomorrow me.

iannnnn

เคยมีวัวตัวนึงบอกตูมาว่า










(แกะมาจากตู้ จมล อีกที)

ลบไปแล้ว ด้วยคำสั่งสุด basic ใน php เลย
คือ unlink ลบไฟล์ และ rmdir ลบโฟลเดอร์
เลยไปหา function ลบทั้ง dir (ขี้เกียจเขียนเอง)
เจอที่ http://php.deeserver.net ได้ code มาดังนี้

<?php
function deldir($dir){
$current_dir = opendir($dir);
while(
$entryname = readdir($current_dir)){
if(
is_dir("$dir/$entryname") and ($entryname != "." and $entryname!="..")){
deldir("${dir}/${entryname}");
}elseif(
$entryname != "." and $entryname!=".."){
unlink("${dir}/${entryname}");
}
}
closedir($current_dir);
rmdir(${dir});
echo
"เสร็จแล้วโว้ย";
}
?>

<?
deldir("webboard");
?>


saveชื่อ del.php แล้ว upload ไปไว้ใน server แล้วเรียกไฟล์ del.php
โคตรลุ้นเลย แลัวพลาดแล้วหายหมดทั้งเวบ   :14:
แต่จนแล้วจนรอด ก็ผ่านไปได้ด้วยดี   :26:

นายโอ้เอ้

อันนั้นเป็นการลบทั้ง folder นะ

deldir("ชือโฟลเดอร์");
แก้ใส่ใน code ด้านบน


แต่ถ้าจะลบไฟล์เดี่ยวๆ ให้ใช้

unlink("ชื่อไฟล์");

ประมาณนี้แหละ
Today you , Tomorrow me.

iannnnn

ขอบคุณครับ (อ๊ะ.. 300)

i-poon

ปั่นต่อได้แล้วใช่ไหมครับ
50 levels avaliable, 22 secrets levels avaliable :P

ooooo

ได้ผล!!




แค่ 2 โฟลเดอร์  :08:


อีกโฟลเดอร์นึงมันเหนียวแน่นหนึบมากครับ

ลบไงก็ไม่ออก

้httpdocs/files/working/0/160.png

ปัญหามันติดอยู่ที่โฟลเดอร์ working กับ 0 ครับ
มันไม่สามารถเอาไฟล์อะไรไปใส่ได้เลย แตะไม่ได้
ไปอ่านที่อื่นเอา เขาก็บอกว่าต้องไม่มีไฟล์อยู่ ถ้าจะใช้ rmdir
ซึ่งมันก็มี 160.png ซึ่งมันก็ลบไม่ได้ แก้ permission ไม่ได้

รบกวนหน่อยครับ โง่เรื่องระบบมาก  :05:

นายโอ้เอ้

เข้าไปลบให้หมดแล้ว
Today you , Tomorrow me.

ooooo

โอ้วส์ส์ส์ ขอบคุณคร้าบบบบบบ

iannnnn

ขุด



พอดีคุยกับป้าหน่อยเรื่องการลบไฟล์ที่มีปัญหาในกรณีเดียวกันนี้
ป้าหน่อยเลยเอาโค้ดตัวนี้ไปแก้ไข
โดยเพิ่มบรรทัดที่มันสั่ง CHMOD เป็น 777 ให้ด้วย ขอบคุณมากครับ :46:

ถ้าใครจะใช้งานตัวนี้อีกก็โหลดไปรันได้เลยครับ (ระวังไฟล์หายหมดเน่อ)

นายโอ้เอ้

งั้นฝากอันนี้อันนนึงแล้วกัน
ทำใช้ตอนย้าย img แล้ว permission ไม่ตรง

<?php
function mychmod($dir){
$handle = opendir($dir);
echo
"start <br>\n\n\n";
while(
false !== ($entryname = readdir($handle))) {
if($entryname != "." and $entryname != "..") {
if (! @chmod("${dir}/${entryname}", 0644)) {
echo "${dir}/${entryname} : ล้มเหลว <br>\n\n";
}
else {
echo "${dir}/${entryname} : ผ่าน <br>\n\n";
}
}
}

closedir($handle);
echo
"<br>เสร็จแล้วโว้ย";
}
?>

<?php
mychmod
("uploads");
?>
Today you , Tomorrow me.

นักสืบ

ผมลองใช้ WS_FTP ลบได้ทุกไฟล์ครับ

X11

FTP ก็แล้วแต่สิทธิเหมือนกันนะ
ลองถ้า admin (root) เป็นคนสร้าง FTP เข้ามาด้วย user อื่น แล้วไม่ได้ให้สิทธิ user อื่นแก้ไขอะไรได้ ก็ลบไม่ออกเหมือนกัน

นายโอ้เอ้

ขยายความจากป้าหน่อยนะครับ

ส่วนใหญ่ไฟล์ที่ลบไม่ได้นั้นจะติดที่ permission หรือสิทธิ์ในไฟล์นั้นๆ
กรณีไฟล์ที่สร้างจาก script อาจจะได้ file owner เป็นอื่นๆ เช่น เป็นของ apache
ซึ่งทำให้ไม่มีสิทธิ์ในการเข้าถึงไฟล์นั้นๆ จึงจำเป็นต้องใช้ script ช่วยในการ chmod
เพื่อให้ user อื่นเข้าถึงไฟล์นั้นๆ ได้
permission จะมีอยู่ 3 ระดับ คือ
owner หรือเจ้าของไฟล์
group กลุ่มของไฟล์
public คือเปิดให้ใครเข้าถึงก็ได้
Today you , Tomorrow me.

iannnnn

ไม่เข้าใจคำว่า group ครับ
ขยายหน่อยได้บ่ :25:


รอมุก

SMF 2.1.7 © 2026, Simple Machines