เนื้อหานี้ เราจะสร้าง 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
}
?>