FTP Class
คลาส FTP ของ CodeIgniter ยอมให้คุณจัดการไฟล์เซิร์ฟเวอร์ทางไกลได้ ไฟล์ทางไกลสามารถย้าย , เปลี่ยนชื่อ, และลบ คลาส FTP ยังมีฟังก์ชัน "mirroring" ที่ทำให้ไดเรคทอรี่ในเครื่องถูกสร้างให้เหมือนกันใน FTP ทางไกลได้
Note: SFTP and SSL FTP protocols are not supported, only standard FTP.
เริ่มต้นใช้คลาส
เหมือนคลาสอื่นๆของ CodeIgniter คลาส FTP นั้นเริ่มต้นได้ในตัวบควมคุม(controller) โดยใช้ฟังก์ชัน $this->load->library
$this->load->library('ftp');
เมื่อโหลดแล้วคุณสามารถใช้ออบเจ็ค FTP ได้โดยการใช้ $this->ftp
ตัวอย่างการใช้งาน
ในตัวอย่างนี้จะเปิดเซิร์ฟเวอร์ FTP และอ่านไฟล์ในเครื่องแล้วอัพโหลดในรูปแบบ ASCII และตั้งค่ายินยอมของไฟล์ไปที่ 755 ข้อควรจำ: การเปลี่ยนค่ายินยอมจำเป็นต้องใช้ PHP 5
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
$this->ftp->close();
ในตัวอย่างนี้เป็นการแสดงไฟล์ที่ได้รับมาจากทางฝั่งเซิร์ฟเวอร์
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->close();
ในตัวอย่างนี้คือไดเรคทอรี่ในเครื่องถูกสร้างให้เหมือนบนเซิร์ฟเวอร์
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->close();
ฟังก์ชันอ้างอิง
$this->ftp->connect()
ติดต่อและบันทึกข้อมูลเวลาติดต่อไปยังเซิร์ฟเวอร์ FTP การปรับแต่งการเชื่อมต่อนั้นสามารถทำได้โดยการใส่อาเรย์ไปยังฟังก์ชัน หรือคุณสามารถเก็บมันไว้ในไฟล์ปรับแต่งได้
นี้คือตัวอย่างที่แสดงการตั้งค่าด้วยตนเอง
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['port'] = 21;
$config['passive'] = FALSE;
$config['debug'] = TRUE;
$this->ftp->connect($config);
ตั้งค่าปรับแต่ง FTP ในไฟล์ปรับแต่ง
ถ้าคุณต้องการที่จะเก็บค่าปรับแต่งไว้ในไฟล์ปรับแต่ง ทำได้ง่ายๆโดยสร้างไฟล์ที่ชื่อ ftp.php และใส่อาเรย์ตัวแปร $config ลงไปในไฟล์นั้น จากนั้นบันทึกเป็นไฟล์แล้วนำไปวางไว้ที่ config/ftp.php และมันจะถูกใช้อย่างอัตโนมัติ
ค่าปรับการเชื่อมต่อที่สามารถใช้ได้
- hostname - ชื่อโฮส FTP โดยปกติแล้วจะเป็นประมาณนี้ ftp.example.com
- username - ชื่อผู้ใช้งานของ FTP
- password - รหัสผ่านของ FTP
- port - ตัวเลขพอร์ต (port) โดยปกติจะถูกตั้งเป็น 21
- debug - TRUE/FALSE (boolean). ถ้าเปิด debug มันจะแสดงข้อมูลที่ผิดพลาดผ่านทางไฟล์บันทึก (log)
- passive - TRUE/FALSE (boolean). สามารถเปิดเป็นโหมดแบบเฉื่อย (passive) โดยทั่วไปนั้นโหมดเฉื่อยนั้นจะถูกตั้งค่าอย่างอัตโนมัติ
$this->ftp->upload()
อัพโหลดไฟล์ขึ้นไปยังเซิร์ฟเวอร์ คุณต้องใส่ตำแหน่งไฟล์ในเครื่อง(local path) และตำแหน่งไฟล์ทางไกล(remote path) และคุณยังสามารถตั้งโหมดและค่ายินยอม (permission) ตัวอย่างเช่น
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
ทางเลือกโหมดมีดังนี้: ascii, binary, และ auto (ค่าตั้งต้น). ถ้า auto ถูกใช้มันจะตั้งโหมดตามนามสกุลไฟล์ของไฟล์ต้นฉบับ
การตั้งค่าการยินยอมสามารถใช้ได้เฉพาะถ้าคุณใช้ PHP 5 และสามารถส่งค่าเป็น octal (เลขฐานแปด) ในพารามิเตอร์ที่สี่
$this->ftp->rename()
ยอมให้คุณเปลี่ยนชื่อไฟล์ โดยให้ใส่ตำแหน่งชื่อไฟล์ และตำแหน่งชื่อไฟล์ใหม่
// เปลี่ยนจาก green.html เป็น blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
$this->ftp->move()
ให้คุยย้ายไฟล์ โดยใส่แหล่งตั้งต้นแล้วก็ปลายทางที่ต้องการ
// ย้าย blog.html จาก "joe" ไป "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');
ข้อสังเกตุ: ถ้าปลายทางของไฟล์ชื่อเปลี่ยนไปมันก็จะเปลี่ยนชื่อไฟล์ด้วย
$this->ftp->delete_file()
ให้คุณลบไฟล์โดยใส่ตำแหน่งของไฟล์
$this->ftp->delete_file('/public_html/joe/blog.html');
$this->ftp->delete_dir()
ยอมให้คุณลบไดเรคทอรี่และทุกอย่างที่อยู่ภายในมัน โดยใส่ตำแหน่งของไดเรคทอรี่และจบด้วย / (trailing slash)
สิ่งสำคัญ จะต้องระมัดระวังในการใช้ฟังก์ชันนี้ มันจะลบ ทุกอย่าง ภายในตำแหน่งที่คุณบอก รวมถึงโฟลเดอร์ภายในและไฟล์ทุกไฟล์ โดยให้คุณแน่ใจว่าตำแหน่งถูกต้อง โดยคุณควรลองใช้ฟังก์ชัน list_files() ก่อนเพื่อพิสูจน์ว่ามีตำแหน่งนั้นจริง
$this->ftp->delete_dir('/public_html/path/to/folder/');
$this->ftp->list_files()
ยอมให้คุณรับรายการของไฟล์ทั้งหมดบนตำแหน่งที่คุณต้องการบนเซิร์ฟเวอร์ และคืนมาเป็น อาเรย์ โดยคุณต้องใส่ตำแหน่งของไดเรคทอรี่ที่คุณต้องการลงไป
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->mirror()
Recursively reads a local folder and everything it contains (including sub-folders) and creates a mirror via FTP based on it. Whatever the directory structure of the original file path will be recreated on the server. You must supply a source path and a destination path:
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->mkdir()
ยอมให้คุณสร้างไดเรคทอรี่บนเซิร์ฟเวอร์ของคุณ โดยใส่ตำแหน่งลงไปพร้อมกับชื่อโฟลเดอร์ที่ต้องการและจบด้วย / (trailing slash) คุณยังสามารถตั้งค่ายินยอมโฟลเดอร์ได้โดยส่งค่า octal ไปยังพารามิเตอ์รที่สอง (ใช้ได้แต่ต้องใช้ PHP 5 นะ)
// สร้างโฟลเดอร์ชื่อ "bar"
$this->ftp->mkdir('/public_html/foo/bar/', DIR_WRITE_MODE);
$this->ftp->chmod()
ยอมให้คุณตั้งค่ายินยอมของไฟล์ (file permissions) โดยใส่เส้นทางของไฟล์หรือโฟลเดอร์ลงไปตามด้วยค่ายินยอมที่ต้องการ
// Chmod "bar" เป็น 777
$this->ftp->chmod('/public_html/foo/bar/', DIR_WRITE_MODE);
$this->ftp->close();
ปิดการเชื่อมต่อไปยังเซิร์ฟเวอร์ของคุณ แนะนำให้คุณใช้มันเมื่อคุณเสร็จการอัพโหลดเสร็จแล้ว