สมมุตินะครับสมมุติ
หลังจากที่ผมอัพโหลดไฟล์จำนวนหนึ่งไปเรียบร้อยแล้ว
โดยที่ได้ทำเว็บจำนวนหนึ่งเกือบเสร็จแล้ว (เป็น 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 มั้ยครับ
เคยมีวัวตัวนึงบอกตูมาว่า
(แกะมาจากตู้ จมล อีกที)
ลบไปแล้ว ด้วยคำสั่งสุด 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("ชื่อไฟล์");
ประมาณนี้แหละ
ขอบคุณครับ (อ๊ะ.. 300)
ปั่นต่อได้แล้วใช่ไหมครับ
ได้ผล!!
แค่ 2 โฟลเดอร์ :08:
อีกโฟลเดอร์นึงมันเหนียวแน่นหนึบมากครับ
ลบไงก็ไม่ออก
้httpdocs/files/working/0/160.png
ปัญหามันติดอยู่ที่โฟลเดอร์ working กับ 0 ครับ
มันไม่สามารถเอาไฟล์อะไรไปใส่ได้เลย แตะไม่ได้
ไปอ่านที่อื่นเอา เขาก็บอกว่าต้องไม่มีไฟล์อยู่ ถ้าจะใช้ rmdir
ซึ่งมันก็มี 160.png ซึ่งมันก็ลบไม่ได้ แก้ permission ไม่ได้
รบกวนหน่อยครับ โง่เรื่องระบบมาก :05:
เข้าไปลบให้หมดแล้ว
โอ้วส์ส์ส์ ขอบคุณคร้าบบบบบบ
ขุด
พอดีคุยกับป้าหน่อยเรื่องการลบไฟล์ที่มีปัญหาในกรณีเดียวกันนี้
ป้าหน่อยเลยเอาโค้ดตัวนี้ไปแก้ไข
โดยเพิ่มบรรทัดที่มันสั่ง 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");
?>
ผมลองใช้ WS_FTP ลบได้ทุกไฟล์ครับ
FTP ก็แล้วแต่สิทธิเหมือนกันนะ
ลองถ้า admin (root) เป็นคนสร้าง FTP เข้ามาด้วย user อื่น แล้วไม่ได้ให้สิทธิ user อื่นแก้ไขอะไรได้ ก็ลบไม่ออกเหมือนกัน
ขยายความจากป้าหน่อยนะครับ
ส่วนใหญ่ไฟล์ที่ลบไม่ได้นั้นจะติดที่ permission หรือสิทธิ์ในไฟล์นั้นๆ
กรณีไฟล์ที่สร้างจาก script อาจจะได้ file owner เป็นอื่นๆ เช่น เป็นของ apache
ซึ่งทำให้ไม่มีสิทธิ์ในการเข้าถึงไฟล์นั้นๆ จึงจำเป็นต้องใช้ script ช่วยในการ chmod
เพื่อให้ user อื่นเข้าถึงไฟล์นั้นๆ ได้
permission จะมีอยู่ 3 ระดับ คือ
owner หรือเจ้าของไฟล์
group กลุ่มของไฟล์
public คือเปิดให้ใครเข้าถึงก็ได้
ไม่เข้าใจคำว่า group ครับ
ขยายหน่อยได้บ่ :25:
รอมุก
อ่ะ ขยาย
g r o u p
อุ้ย... คิดได้ไง ขำขี้แตก :43:
กลุ่มไง ยกตัวอย่างให้เห็นง่ายๆ เลย
แอนเป็นผู้ใช้ อยู่ในกลุ่มยักษ์ จึงมีสิทธิ์เท่าที่ยักษ์จะมี
แหม๊... กะแล้วต้องมามุกนี้
ตูเลยแอบพิมพ์ตัวสีขาวไว้ในโพสต์ก่อน :30:
(+2)
ห น่ อ ย :33:
// ไม่ทัน {หมีโหด}
ขยายหน่อยต้องแบบนี้
x 1 1
เอ้า งงล่ะสิ (ป้าหน่อย x11 ไง :42:)
:44:
ผมใช้ http://fireftp.mozdev.org เป็น add-on ใน firefox อ่ะครับ ทำทุกอย่างได้เร็วดียกเว้นการอัพโหลด ไม่รู้เป็นที่ server ที่ผมใช้รึป่าว...
ไฟล์ใน ฟด. โฟลเดอร์ที่ว่างๆกะว่าจะลบทิ้ง
แต่อยู่ๆ ลบไม่ได้ซะงั้นหน่ะ งงเลย :08: