สิทธิ์การเข้าถึงไฟล์ (File Permission) คือการกำหนดสิทธิ์ว่าไฟล์/โฟลเดอร์ใดอ่านได้ เขียน(แก้ไข)ได้ เป็นต้น ซึ่งในแต่ละระบบจะไม่เหมือนกัน บางระบบก็ไม่ต้องไปกำหนดค่าใด ๆ แต่บางระบบต้องกำหนดสิทธิ์การเข้าถึงไฟล์/โฟลเดอร์ด้วย หากไม่กำหนด เมื่อมีการเข้าถึง ก็อาจจะเกิดข้อผิดพลาด ทำให้ไม่สามารถทำงานต่อไปได้
ปัญหาที่เกิดขึ้นหากไม่ได้กำหนดสิทธิ์การเข้าถึงไฟล์ เช่น เมื่ออัพโหลดไฟล์แล้ว จะปรากฏข้อความว่า
Unable to create directory /home/user/public_html/wp-content/uploads/2008/11. Is its parent directory writable by the server?
ที่เป็นเช่นนี้เพราะไม่ได้กำหนดสิทธิ์ให้โฟลเดอร์ uploads นั้นเขียนได้นั่นเอง และปัญหาที่เกิดจากการไม่กำหนดสิทธิ์การเข้าถึงไฟล์นี้มีอีกหลายอย่าง เช่น การแก้ไขธีมผ่านทาง Theme Editor และการปรับปรุงรูปแบบของ ลิงก์ถาวร (Permalinks)
โฮสต์ใดที่มีปัญหาและไม่มีปัญหา
ปัญหาเหล่านี้ หากจำลองเครื่องคอมพิวเตอร์ (PC) ให้เป็น WebServer ด้วย XAMPP หรือ AppServ จะไม่มีปัญหาแต่อย่างใด (มีปัญหาตรง Permalinks ซึ่งเกี่ยวกับการเปิด mod_rewirte module ใน Apache จะไม่กล่าวในบทความนี้ เพราะไม่ได้เกี่ยวกับสิทธิ์การเข้าถึงไฟล์) คือ ไม่ต้องกำหนดสิทธิ์ในการเข้าถึงไฟล์ สามารถใช้งานได้ตามปกติ
แต่ปัญหานี้เกิดกับการใช้ hosting เพื่อทำเว็บบางระบบ เช่น hosting ของ 000webhost.com ซึ่งจะต้องมีการกำหนดสิทธิ์การเข้าถึงไฟล์ก่อน หากไม่กำหนดจะเกิดปัญหาขึ้น คือไม่สามารถเขียน/แก้ไขไฟล์ได้ รวมทั้งยังไม่สนับสนุน mod_rewrite ด้วย
ส่วนบาง hosting ที่ไม่มีปัญหาก็คือ bluehost ซึ่งจะรองรับ mod_rewrite ทำให้ไม่มีปัญหาเรื่องการปรับแต่ง Permalinks รวมทั้งการกำหนดการเข้าถึงไฟล์ ทั้งไฟล์ธีม และในส่วนของโฟลเดอร์ uploads ที่ใช้สำหรับเก็บไฟล์ที่เราอัพโหลดเข้าไป ในการใช้งาน WordPress กับ Bluehost นั้น ไม่ต้องปรับแต่งอะไรเลย ทุกอย่างอัตโนมัติหมด
จะรู้ได้อย่างไรว่ามีปัญหา
การที่เราจะทราบว่า hosting ที่เราใช้นั้นมีปัญหาเรื่องการกำหนดสิทธิ์หรือไม่ อย่างแรกก็คือใช้งานจริง ๆ เมื่อมีปัญหาแล้วก็ค่อยแก้ไข อย่างที่สองคือ เลือกเมนู Design แล้วเลือก Theme Editor เลื่อนจอภาพไปดูด้านล่างของหน้าต่างแก้ไขไฟล์ หากพบข้อความ
You need to make this file writable before you can save your changes. See the Codex for more information.
ก็แสดงว่า มีปัญหาแล้วหล่ะครับ คุณจะต้องกำหนดสิทธิ์ให้สามารถเขียนไฟล์ได้
ปัญหาและการแก้ไข
ปัญหาที่เกิดขึ้นหากไม่ได้มีการกำหนดสิทธิ์การเข้าถึงไฟล์มีดังนี้
1. โฟลเดอร์ uploads ปกติแล้วโฟลเดอร์สำหรับเก็บไฟล์ที่เราอัพโหลดขึ้นไป ค่าเริ่มต้นของ WordPress จะอยู่ที่ wp-content/uploads หากไม่กำหนดสิทธิ์ให้เขียนได้ จะเกิดปัญหาคืออัพโหลดไฟล์เข้าไปไม่ได้
ทางแก้ปัญหาก็คือ สร้างโฟลเดอร์ uploads ใน wp-content แล้วกำหนดสิทธิ์ให้เป็น 777 หรือ chmod 777 เมื่อกำหนดสิทธิ์แล้วก็จะสามารถอัพโหลดไฟล์ขึ้นไปได้อย่างไม่มีปัญหา
2. ไฟล์ธีม ไฟล์ในธีมต่าง ๆ นั้นเราจะไม่สามารถแก้ไขได้ เมื่อเปิดไฟล์ขึ้นมาแก้ไข จะปรากฏข้อความท้ายหน้าต่างแก้ไขไฟล์ ให้เราไปแก้ไขไฟล์ให้สามารถเขียนได้เสียก่อน และจะไม่มีปุ่ม “Update File” ด้วย
ทางแก้ไขคือให้เรากำหนดสิทธิ์ของไฟล์ในธีมที่เราต้องการแก้ไข (หรือเผื่อเอาไว้แก้ไข) ให้เป็น 777 หรือ chmod 777
แนะนำ : หากคุณใช้การแก้ไขไฟล์แล้วอัพโหลดไฟล์ธีมผ่านทาง FTP Client การกำหนดสิทธิ์ก็ไม่จำเป็น หรือหากมีผู้ดูแลระบบหลายคน และหากไม่ต้องการให้ใครแก้ไขไฟล์ธีมต่าง ๆ ก็ไม่ต้องไปกำหนดสิทธิ์ให้เขียนได้
3. ไฟล์ .htaccess ไฟล์นี้จำเป็นสำหรับการกำหนด Permalinks หาก hosting ใด ไม่สนับสนุน mod_rewrite จะทำให้ไม่สามารถกำหนด Permalinks ได้ เมื่อกำหนด Permalinks WordPress จะแจ้งข้อความ “You shuold update your .htaccess now.”
ทางแก้ไขก็คือ ให้สร้างไฟล์ .htaccess แล้วอัพโหลดไปไว้ยังโฟลเดอร์ที่เป็น Blog adress กล่าวคือ ในกรณีที่ WordPress address และ Blog address เป็น url เดียวกันก็อัพโหลดไว้ในโฟลเดอร์ที่ติดตั้ง WordPress
แต่ในกรณีที่เรียกบล็อกผ่านทาง http://domain.com แต่ติดตั้ง WordPress ไว้ที่ http://domain.com/wordpress ในกรณีนี้ ต้องอัพโหลดไว้ที่ root โฟลเดอร์ของ http://domain.com
เมื่ออัพโหลดไปแล้ว ให้เปลี่ยนสิทธิ์เป็น 777 หรือ chmod 777
เมื่อเปลี่ยนสิทธิ์ให้เขียนได้แล้ว ก็จะสามารถปรับปรุง Permalinks ได้
การเปลี่ยนสิทธิ์โดยใช้ FileZilla
การเปลี่ยนสิทธิ์การเข้าถึงไฟล์โดยใช้ FileZilla FTP Client นั้นทำดังนี้
ล็อกอินเข้าไปยังระบบ แล้วเลือกไฟล์/โฟลเดอร์ที่ต้องการจะเปลี่ยนสิทธิ์
แล้วคลิกเม้าส์ขวาบนไฟล์/โฟลเดอร์ที่ต้องการ แล้วเลือกเมนู “สิทธิการเข้าถึงแฟ้ม”
ป้อนเลขที่ต้องการ (777) ในช่อง Numeric value แล้วคลิกปุ่ม “ตกลง”
เมื่อเปลี่ยนสิทธิ์การเข้าถึงไฟล์/โฟลเดอร์ต่าง ๆ ให้เรียบร้อยก็จะสามารถใช้งาน WordPress ได้อย่างราบรื่นแล้วหล่ะครับ
อธิบายได้ดีมากครับ เหมาะสำหรับคนที่แก้ปัญหาไม่ค่อยเป็นอย่างผมมากครับ
ขอบคุณสำหรับเนื้อหาดีๆครับ
ขอบคุณมากครับ ไม่ได้พี่หละแย่แน่
ติดปัญหานี้อยู่เหมือนกันแต่แก้ได้แล้ว ขอบคุณมากครับ ^ ^
จาก Filezilla ผมลองแก้ตามที่บอกแล้วครับ แต่ก็ไม่ได้เหมือนเดิม มันบอกแบบนี้ครับ
Response: 550 CHMOD 777 uploads: Operation not permitted
ลองทำตามที่บอกทุกอย่างแล้วก็ยังไม่หายครับ ทำไงดี
@harry ใช้โฮสต์ที่ไหนครับ หากบนเครื่องไม่ต้อง แต่หากบนโฮสต์จริง แล้วทำไม่ได้ แนะนำให้แจ้งผู้ดูแลระบบครับ