เนื้อหานี้ เราจะสร้าง php function เกี่ยวกับการใช้งาน ftp function เพื่อให้สะดวกในการ
นำไปใช้งานได้ง่ายขึ้น หรือใช้แก้ปัญหาในกรณีที่บางคำสั่งไม่สามารถใช้งานผ่าน php function
ปกติธรรมดาได้ เช่น การ chmod ไฟล์ หรือ โฟลเดอร์ เป็นต้น
เริ่มต้น ให้เราสร้างไฟล์ php สำหรับ ftp function บันทึกเป็น config_ftp.php ไว้เรียกใช้ ดังนี้
<?php // ฟังก์ชันการติดกับ server ผ่าน FTP function ftpOpen(){ // กำหนดค่าการติดต่อ FTP $ftp_user_name = 'username'; // userane $ftp_user_pass = 'password'; // password $ftp_server = 'www.yourdomain.com'; // server $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); return $conn_id; } // ฟังก์ชันสำหรับกำหนด permissions function ftpChmod($conn_id, $permissions,$parentDir,$nameDir){ $fullPath=$parentDir.$nameDir; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist if(@ftp_site($conn_id, 'CHMOD '.$permissions.' '.$fullPath) !== false){ return true; }else{ return false; } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับสร้าง Directory หรือ Folder function ftpMakeDir($conn_id,$parentDir,$nameDir){ $fullPath=$parentDir.$nameDir; if(!@ftp_chdir($conn_id,$fullPath)){ // folder not yet if(@ftp_chdir($conn_id,$parentDir)){ // ไปที่โฟลเดอร์หลักที่จะใช้งาน if(@ftp_mkdir($conn_id,$nameDir)) { return true; }else{ return false; } }else{ return false; } }else{ // folder exist return true; } // end } // ฟังก์ชันสำหรับลบ Directory หรือ Folder (ข้อระวัง* หากมีไฟล์ภายใน ระบบจะลบไฟล์ทั้งหมดใน Folder) function ftpRemoveDir($conn_id,$parentDir,$nameDir){ $fullPath=$parentDir.$nameDir; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist $contents = @ftp_nlist($conn_id,$fullPath); if(count($contents)>=3){ // have file or folder inside foreach($contents as $key=>$value){ if(!is_dir(basename($value))){ @ftp_site($conn_id, 'CHMOD 0777 '.$value); @ftp_delete($conn_id,$value); } } @ftp_chdir($conn_id,$parentDir); if(@ftp_rmdir($conn_id,$nameDir)) { return true; }else{ if(ftp_site($conn_id, 'CHMOD 0777 '.$fullPath)){ if(@ftp_rmdir($conn_id,$nameDir)) { return true; }else{ return false; } }else{ return false; } } }else{ // no file or folder inside @ftp_chdir($conn_id,$parentDir); if(@ftp_rmdir($conn_id,$nameDir)) { return true; }else{ if(@ftp_site($conn_id, 'CHMOD 0777 '.$fullPath)){ if(@ftp_rmdir($conn_id,$nameDir)) { return true; }else{ return false; } }else{ return false; } } } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับเปลี่ยนชื่อ Directory หรือ Folder function ftpRenameDir($conn_id,$parentDir,$nameDir,$newNameDir){ $fullPath=$parentDir.$nameDir; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist @ftp_chdir($conn_id,$parentDir); if(@ftp_rename($conn_id,$nameDir,$newNameDir)) { return true; }else{ if(@ftp_site($conn_id, 'CHMOD 0777 '.$fullPath)){ if(@ftp_rename($conn_id,$nameDir,$newNameDir)) { return true; }else{ return false; } }else{ return false; } } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับกำหนด permissions ไฟล์ function ftpChmodFile($conn_id, $permissions,$parentDir,$nameDir,$fileName){ $fullPath=$parentDir.$nameDir; $fullPathFile=$parentDir.$nameDir."/".$fileName; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist if(@ftp_site($conn_id, 'CHMOD '.$permissions.' '.$fullPathFile) !== false){ return true; }else{ return false; } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับเปลี่ยนชื่อ ไฟล์ function ftpRenameFile($conn_id,$parentDir,$nameDir,$fileName,$new_fileName){ $fullPath=$parentDir.$nameDir; $fullPathFile=$parentDir.$nameDir."/".$fileName; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist if(@ftp_rename($conn_id,$fileName,$new_fileName)) { return true; }else{ if(@ftp_site($conn_id, 'CHMOD 0777 '.$fullPathFile)){ if(@ftp_rename($conn_id,$fileName,$new_fileName)) { return true; }else{ return false; } }else{ return false; } } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับหาขนาดไฟล์ function ftpFileSize($conn_id,$parentDir,$nameDir,$fileName){ $fullPath=$parentDir.$nameDir; $fullPathFile=$parentDir.$nameDir."/".$fileName; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist if(@ftp_size($conn_id,$fileName)!=-1) { return @ftp_size($conn_id,$fileName); }else{ return false; } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับหา ว่ามีไฟล์ชื่อนี้หรือไม่ function ftpIsFile($conn_id,$parentDir,$nameDir,$fileName){ $fullPath=$parentDir.$nameDir; $fullPathFile=$parentDir.$nameDir."/".$fileName; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist if(@ftp_size($conn_id,$fileName)!=-1) { return true; }else{ return false; } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับอัพโหลดไฟล์ function ftpUploadFile($conn_id,$parentDir,$nameDir,$fileName,$uploadFile){ $fullPath=$parentDir.$nameDir; $fullPathFile=$parentDir.$nameDir."/".$fileName; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist if(@ftp_put($conn_id, $fileName,$uploadFile,FTP_ASCII)){ if(@ftp_site($conn_id, 'CHMOD 0777 '.$fullPathFile)){ return true; }else{ return false; } }else{ return false; } }else{ // folder not yet return false; } // end } // ฟังก์ชันสำหรับลบ ไฟล์ function ftpRemoveFile($conn_id,$parentDir,$nameDir,$fileName){ $fullPath=$parentDir.$nameDir; $fullPathFile=$parentDir.$nameDir."/".$fileName; if(@ftp_chdir($conn_id,$fullPath)){ // folder exist if(@ftp_delete($conn_id,$fileName)){ return true; }else{ if(@ftp_site($conn_id, 'CHMOD 0777 '.$fullPathFile)){ if(@ftp_delete($conn_id,$fileName)) { return true; }else{ return false; } }else{ return false; } } }else{ // folder not yet return false; } // end } // ฟังก์ชันปิดการเชื่อมต่อ Server ผ่าน FTP function ftpClose($conn_id){ ftp_close($conn_id); } ?>
ตัวอย่างการใช้งาน แนะนำให้ทดสอบใช้งาน ตามวิธีด้านล่าง การนำไปประยุกต์เพิ่มเติม
<?php require_once("config_ftp.php"); $parentDir="/domains/youdomain.com/public_html/test/"; // Directory หลักสำหรับจัดการ /* การกำหนด path ไฟล์ จะขึ้นอยู่กับการตั้งค่า ของ user นั้นว่ากำหนดใน ftp account หรือ บัญชีผู้ใช้งาน ftp อย่างไร และก็ขึ้นกับ server ที่ใช้งาน กรณีข้างต้นเป็น $parentDir="/domains/youdomain.com/public_html/test/"; // Directory หลักสำหรับจัดการ หรืออาจจะเป็น $parentDir="/public_html/test/"; // Directory หลักสำหรับจัดการ */ // ตัวแปรส่วนนี้ เป็นส่วนสำหรับทดสอบ เราจะกำหนดจุดนี้ หรือไปกำหนดในตอนเรียกใช้ฟัก์ชั่นก็ได้ $nameDir="folder1"; // ฃื่อ Directory ที่ต้องการสร้าง, กำหนด permissions, ลบ, หรือเปลี่ยนชื่อ $newNameDir="myNewFolder"; // ชื่อ Directory ใหม่กรณีเปลี่ยนชื่อ Directory $fileName="testpic.jpg"; // สมมติมีไฟล์ชื่อนี้อยู่ในโฟลเดอร์ folder1 $new_fileName="testpic2.jpg"; // สมมติชื่อไฟล์ใหม่ $conn_id = ftpOpen(); // เปิดการเชื่อมต่อผ่าน FTP if($conn_id){ // ฟังก์ชันสำหรับกำหนด permissions ftpChmod($conn_id, $permissions,$parentDir,$nameDir); // ตัวอย่าง ftpChmod($conn_id, "0777",$parentDir,$nameDir); // การใช้งาน if(ftpChmod($conn_id, "0777",$parentDir,$nameDir)){ echo "Success"; }else{ echo "Fail"; } // ฟังก์ชันสำหรับสร้าง Directory หรือ Folder ftpMakeDir($conn_id,$parentDir,$nameDir); // ตัวอย่าง ftpMakeDir($conn_id,$parentDir,$nameDir); // การใช้งาน if(ftpMakeDir($conn_id,$parentDir,$nameDir)){ echo "Success"; }else{ echo "Fail"; } // ฟังก์ชันสำหรับลบ Directory หรือ Folder (ข้อระวัง* หากมีไฟล์ภายใน ระบบจะลบไฟล์ทั้งหมดใน Folder) ftpRemoveDir($conn_id,$parentDir,$nameDir); // ตัวอย่าง ftpRemoveDir($conn_id,$parentDir,$nameDir); // การใช้งาน if(ftpRemoveDir($conn_id,$parentDir,$nameDir)){ echo "Success"; }else{ echo "Fail"; } // ฟังก์ชันสำหรับเปลี่ยนชื่อ Directory หรือ Folder ftpRenameDir($conn_id,$parentDir,$nameDir,$newNameDir); // ตัวอย่าง ftpRenameDir($conn_id,$parentDir,$nameDir,$newNameDir); // การใช้งาน if(ftpRenameDir($conn_id,$parentDir,$nameDir,$newNameDir)){ echo "Success"; }else{ echo "Fail"; } // ฟังก์ชันสำหรับเปลี่ยนชื่อ ไฟล์ ftpRenameFile($conn_id,$parentDir,$nameDir,$fileName,$new_fileName); // ตัวอย่าง ftpRenameFile($conn_id,$parentDir,$nameDir,$fileName,$new_fileName); // การใช้งาน if(ftpRenameFile($conn_id,$parentDir,$nameDir,$fileName,$new_fileName)){ echo "Success"; }else{ echo "Fail"; } // ฟังก์ชั่นสำหรับเปลี่ยนไฟล์ permission ftpChmodFile($conn_id, $permissions,$parentDir,$nameDir,$fileName); // ตัวอย่าง ftpChmodFile($conn_id,"0777",$parentDir,$nameDir,$fileName); // การใช้งาน if(ftpChmodFile($conn_id,"0777",$parentDir,$nameDir,$fileName)){ echo "Success"; }else{ echo "Fail"; } // ฟังก์ชันสำหรับหาขนาดไฟล์ ftpFileSize($conn_id,$parentDir,$nameDir,$fileName); // ตัวอย่าง ftpFileSize($conn_id,$parentDir,$nameDir,$fileName); // การใช้งาน $fileSize = ftpFileSize($conn_id,$parentDir,$nameDir,$fileName); if($fileSize){ echo "File Size: $fileSize"; }else{ echo "Fail"; } // ฟังก์ชันสำหรับหา ว่ามีไฟล์ชื่อนี้หรือไม่ ftpIsFile($conn_id,$parentDir,$nameDir,$fileName); // ตัวอย่าง ftpIsFile($conn_id,$parentDir,$nameDir,$fileName); // การใช้งาน if(ftpIsFile($conn_id,$parentDir,$nameDir,$fileName)){ echo "Success file exist"; }else{ echo "Fail no such file"; } // ฟังก์ชันสำหรับอัพโหลดไฟล์ ftpUploadFile($conn_id,$parentDir,$nameDir,$fileName,$uploadFile); // ตัวอย่าง ftpUploadFile($conn_id,$parentDir,$nameDir,$_FILES['file']['name'],$_FILES['file']['tmp_name']); // การใช้งาน if(ftpUploadFile($conn_id,$parentDir,$nameDir,$_FILES['file']['name'],$_FILES['file']['tmp_name'])){ echo "Success upload file complete"; }else{ echo "Fail"; } // ฟังก์ชันสำหรับลบ ไฟล์ ftpRemoveFile($conn_id,$parentDir,$nameDir,$fileName); // ตัวอย่าง ftpRemoveFile($conn_id,$parentDir,$nameDir,$fileName); // การใช้งาน if(ftpRemoveFile($conn_id,$parentDir,$nameDir,$fileName)){ echo "Success"; }else{ echo "Fail"; } ftpClose($conn_id); // ปิดการติดต่อผ่าน FTP } ?>