เรื่องมันมีอยู่ว่า WordPress ซึ่งผมใช้ทำบล็อกนี้อยู่เนี่ย มันแจ้งให้ผม update หน่อย มีบั๊กให้ต้องแก้
โดยปกติแล้วเจ้า WordPress ผู้แสนน่ารักของเราจะขึ้นหน้าจอขออนุญาตใช้สิทธิ์ FTP ไปใส่ไฟล์ใหม่ๆ ให้ แบบนี้ :
แต่ปรากฎว่าแทนที่จะขึ้ันมาขอค่า ปรากฎว่ามันลัดหน้านั้นไป ซ้ำร้าย… มันยังขึ้นข้อความว่า
การอัปเดตไม่สามารถติดตั้งได้เพราะว่าเราไม่สามารถคัดลอกบางไฟล์ ปัญหานี่ส่วนใหญ่เกิดจากการอนุญาตไฟล์ที่ไม่สมบูรณ์ : wp-admin/includes/***.php
ซวยล่ะ! ทำไงดีล่ะ ขืนหาวิธีแก้ไม่ได้มีหวังต้องโหลดมาลงคอมผ่านเน็ต 3G ติด FUP กากๆ นี้แน่นอน
แต่ก่อนจะคิดสั้นทำวิธีถึก ก็ google ไปเจอฝรั่งโพสต์วิธีแก้ไว้ (อันที่จริงเค้าโพสต์วิธียกเลิกใช้หน้าจอขอสิทธิ์ แต่วิธีการก็คล้ายๆ กัน)
เขากล่าวว่า ให้สูเจ้าไปดูที่ไฟล์ wp-config.php ใส่ค่าคงที่ FS_METHOD เป็น direct ซะ
เมื่อลองเปิดใน Codex ก็พบว่าเจ้าค่านี่มันมีแบ่งเป็น 4 ประเภท คือ
- “direct” คืออ่านเขียนไฟล์ผ่าน php โต้งๆ เลย ซึ่งมักจะเจอปัญหาคนไม่มีสิทธิ์ ก็ผิดตั้งแต่วันที่เราเกิด เอ้ย! ผู้ใช้ไม่มีสิทธิ์ในการแก้ไขไฟล์ดังที่ผมเจอ
- “ssh2” คือใช้ส่วนเสริม SSH ในการแก้ไขถ้าเซิร์ฟเวอร์มีให้ใช้
- “ftpext” คือใช้ส่วนเสริม FTP ในการแก้ไขถ้าเซิร์ฟเวอร์มีให้ใช้ และ
- “ftpsockets” คือใช้คลาส PHP Sockets ในการใช้งาน FTP
ทั้งนี้ ผู้พัฒนาก็เตือนว่า ถ้าสูเจ้าใส่แล้วมีปัญหานัก จงแก้หรือเอาออกซะ อย่าไปดันทุรังให้เสียเวลา
และบังเอิญระบบผม (ซึ่งติดตั้งผ่านตัวช่วยของ DirectAdmin) มันตั้งให้ใช้ direct ครับท่านผู้โชม….
define('FS_METHOD','direct');
ก็ลอง comment ออกไป แล้วอัพเดต
หน้าจอขอสิทธิ์กลับมาแล้ว… แต่เซิร์ฟเราไม่ได้ใช้ port 21 นี่หว่า… ทำไงดี
ก็ google ไปอีกรอบ ก็มีคนเคยถามไว้แล้วเหมือนกัน มีคนตอบว่า สูเจ้าก็ใช้ตามปกติของสูนั่นแหละ แต่จงใส่ colon (:) ตามด้วย port ที่สูเจ้าใช้
ลองทำดู เออ มันได้จริงด้วยวุ้ย… ผ่านแล้ว! 😀
ที่จริงส่วนของการอัพเกรด นอกจาก FS_METHOD แล้ว มัยังมีค่าอื่นให้ปรับอีกนะครับ ได้แก่
- FTP_BASE ไว้กำหนดโฟลเดอร์ที่อยู่ของ wordpress ในเซิร์ฟเวอร์
- FTP_CONTENT_DIR ไว้กำหนดโฟลเดอร์ที่อยู่ของ wp-content ในเซิร์ฟเวอร์ (เผื่อบางคนเอาไว้สับขาหลอกนะครับ)
- FTP_PLUGIN_DIR ไว้กำหนดโฟลเดอร์ที่อยู่ของปลั๊กอินในเซิร์ฟเวอร์ (เผื่อบางคนเอาไว้สับขาหลอกอีกเช่นเคยนะครับ)
- FTP_PUBKEY คือที่อยู่ของไฟล์ SSH public key กรณีที่ใช้ SSH
- FTP_PRIKEY คือที่อยู่ของไฟล์ SSH private key กรณีที่ใช้ SSH
- FTP_USER คือ username ที่ไว้ใช้ใน FTP หรือ SSH
- FTP_PASS คือ password ที่ไว้ใช้ใน FTP หรือ SSH
- FTP_HOST คือที่อยู่:พอร์ต (แบบที่ฝรั่งคนก่อนหน้านี้ตอบไว้) ที่ไว้ใช้ใน FTP หรือ SSH แต่ถ้าใช้ 21 สำหรับ FTP หรือ 22 สำหรับ SSH ก็ไม่ต้องใส่ก็ได้
- FTP_SSL กำหนดจริงไว้กรณีเชื่อต่อ FTP แบบ SSL ซึ่งเป็นคนละตัวกับ SSH SFTP (ใครที่ใช้ WinSCP คงจะเคยเห็นมาบ้างนะครับ 🙂 )
เส้นผมบังภูเขา (A leaf screening the eye.) จริงๆ นะครัช แหม่…
แอบอ้างมาจาก :
เรื่องหน้าจอขอสิทธิ์ : http://www.hongkiat.com/blog/update-wordpress-without-ftp/
การตั้งค่า wp-config : http://codex.wordpress.org/Editing_wp-config.php
การใส่ port ให้ ftp : http://wordpress.org/support/topic/if-i-using-another-port-for-ftp-how-can-i-update-via-ftp-my-plugin