พื้นฐาน Joomla

จัดบทความอย่างไร ให้ดูดี
การเขียนบทความในจูมล่า ไม่ใช่ว่าจะพิมพ์ ๆ ๆ ไปแล้วก็ Save แล้วจะออกมาดูแจ่มนะครับ ของแบบนี้ เทค...

เทคนิค Joomla

การสร้าง Virtual Host ใน Apache
จากบทความที่ได้ติดตั้งและใช้งานโปรแกรม AppServ ไป ซึ่งภายในโปรแกรมนั้นก็มีโปรแกรมจำลอง Web Serv...

แนะนำ Extension

Joomla Bridge SMF ด้วย JFusion
หากันอยู่ใช่ไหมล่ะ แหม จะทำยังไงน้อ ที่จะใช้เว็บบอร์ด SMF เชื่อมกับ Joomla ได้ เป็นบทความที่ผมจ...
( 1 Vote )
operation not  permitted Joomla นั้น จะมีการใช้งานบางอย่าง ที่ต้องเก็บค่าบันทึกต่าง ๆ ลงในไฟล์โดยตรง เช่น param.ini , configuration.php , template.css หรือไดเร็คทอรี่บางตำแหน่ง ที่ต้องอนุญาตให้เขียนไฟล์เพิ่มเติมลงไปได้ เช่น การอัพโหลดรูปผ่าน Joomla , อัพโหลดไฟล์อื่น ๆ ผ่าน Joomla ดังนั้น ไฟล์เป้าหมาย หรือไดเร็คทอรี่ที่ต้องการ ก็จะต้องมีการ Set Permission เพื่อให้สามารถเขียนลงได้เสียก่อน ซึ่งเรามักจะทำผ่านโปรแกรม FTP ต่าง ๆ เช่น Filezilla

ทีนี้ เมื่อเราเห็นข้อผิดพลาดแล้วว่า เราไม่สามารถอัพโหลด , แก้ไขไฟล์ หรือบันทึกการตั้งค่าต่าง ๆ ได้นั้น เราก็จะมา Set Permission ผ่านโปรแกรม FTP นี้ หรือไม่ก็กำหนดสิทธิ์ให้ Write ได้ใน Windows Hosting แต่สิ่งที่กำลังจะบอกคือ หลังจากที่เรา Set ตัวเลข Permission เช่น 777 ใน Linux Hosting ไปแล้ว เราได้ดูข้อความที่แจ้งสถานนะการ Set หรือไม่ พอ Set ไป ก็กลับกลายเป็นว่า ไม่มีอะไรเปลี่ยนแปลง การเขียนไฟล์ต่าง ๆ ยังไม่สามารถทำได้เหมือนเดิม ด้วยความที่ ถ้าหากคนไม่รู้ ก็จะไปกด 777 หรือ Write อยู่นั่นแหล่ะ มันก็ไม่ได้เสียที

การที่จะดูข้อความดังกล่าวนั้น สามารถดูได้ง่าย ๆ ในโปรแกรม FTP นั้นแหล่ะครับ จากตัวอย่างดังภาพนี้ ผมได้ล็อคอินผ่านหน้า Backend ของ Joomla เพื่อแก้ไขค่า Global Configuration ซึ่งการแก้ไขค่านี้ จะถูกบันทึกลงในไฟล์ที่ชื่อว่า configuration.php แต่เมื่อผมแก้ไขแล้ว ค่าที่บันทึกไป กลับไม่เปลี่ยนแปลง เพราะว่าไฟล์ configuration.php นั้น มีตัวเลข Permission เป็น 666 อยู่นั่นเอง ผมจึงต้องไปแก้ไขให้เป็น 777 ชั่วคราวก่อน แต่เมื่อผมแก้ไขแล้ว กลับมาข้อความขึ้นมาว่า

operation not permitted

     จะเห็นว่า การ Set Permission นั้น ล้มเหลว แล้วจะทำอย่างไรล่ะครับงานนี้

สามารถอธิบายได้ดังนี้ครับ ทุกครั้ง ที่เราทำการสร้างไดเร็คทอรี่ หรือ ไฟล์ใด ๆ ก็ตาม เช่น การสร้างไดเร็คทอรี่ในเมนู Media Manager , การอัพโหลด Extensions , การอัพโหลดเทมเพลท , การอัพโหลดรูปภาพผ่าน Media Manager , การอัพโหลดรูปภาพผ่านทาง Component ต่าง ๆ หรือ แม้แต่ไฟล์ configuration.php ที่ถูกสร้างขึ้นจาก Joomla นั้น จะมีความเป็นเจ้าของต่างกันออกไป ผมกำลังพูดถึงความเป็นเจ้าของนะครับ หรือ Owner ไม่ใช่ Permission

ความเป็นเจ้าของคือ การที่ไฟล์ หรือ ไดเร็คทอรี่ ถูกสร้างผ่าน Joomla นั้น จะถูกมองว่า เราไม่ได้เป็นคนสร้างเอง และเราไม่ได้เป็นเจ้าของ แต่คนที่เป็นเจ้าของไฟล์ หรือ ไดเร็คทอรี่นั้น คือโอส และแน่นอนว่า โฮสนั้น เป็นลูกพี่ใหญ่ เราเองเป็นแค่คนใช้งาน จึงไม่สามารถไปแก้ไขอะไรที่ไม่ใช่ของเราได้ แม้แต่การเปลี่ยน Permission เราก็ยังทำไม่ได้ ทั้ง ๆ ที่มันเป็นพื้นที่ของเราแท้ ๆ , ปัญหานี้ เกิดขึ้นจากที่ผมบอกไปนั่นแหล่ะครับ เมื่อเราใช้ Joomla สร้างอะไรก็ตาม ความเป็นเจ้าของจะตกไปอยู่ที่โฮส ซึ่งมักจะมีชื่อผู้ใช้งานเป็น nobody หรือ apache ซึ่งมันไม่ใช่ชื่อผู้ใช้งานของเราเลย

ดังนั้น โฮสจึงเตรียมวิธีแก้ไขนี้มาให้ โดยให้เราสามารถ Reset ความเป็นเจ้าของ ให้กลายเป็นของเราเอง ในตัวอย่างนี้ ผมใช้โฮสที่มี Panel เป็น Direct Admin ผมก็เข้าไปหาไฟล์ configuration.php ที่มีปัญหา

operation not permitted

จะเห็นอยู่คอลัมน์หนึ่ง ที่มีคำว่า apache ซึ่งไฟล์นี้ มีเจ้าของคือ โฮส ชื่อว่า apache แต่ทว่า ชื่อผู้ใช้งานของผมนั้นในการทดสอบนี้คือ trainjoom ผมจึงไม่สามารถ Set Permission ได้ วิธีแก้ไขก็คือ กดลิ้งค์ Reset Owner เพียงแค่นี้ ไฟล์ configuration.php ก็จะตกเป็นของเราแล้วล่ะครับ เราก็สามารถไป Set Permission ได้เป็นปกติ

เหตุการณ์แบบนี้ เกิดขึ้นได้กับการติดตั้ง Extensions ต่าง ๆ ตามที่ได้กล่าวไปแล้ว ให้ลองกลับไปดูที่เว็บตัวเองนะครับ เมื่อสร้างไดเร็คทอรี่โดยผ่าน Joomla หรือ ติดตั้งเทมเพลท , Extensions ลงไป ความเป็นเจ้าของจะตกไปอยู่ที่โฮส

ย้อนความเดิมกับไฟล์ configuration.php นั้น ทำไมจึงกลายเป็นของโฮส เนื่องจากในขั้นตอนการติดตั้ง ผมได้ทำการ Set Permission ของ Root Directory ให้สามารถเขียนทับได้ ซึ่งจะทำให้ขั้นตอนสุดท้ายของการติดตั้ง Joomla นั้น ไม่ต้อง Copy ข้อความไฟล์ configuration.php ไปสร้างเอง โดยไฟล์นี้จะถูกสร้างขึ้นโดยอัตโนมัติ และถูกสร้างโดยเครื่องมือของ Joomla ดังนั้น เมื่อมันถูกสร้างโดย Joomla ความเป็นเจ้าของ ก็จึงตกไปเป็นของโฮส ที่ชื่อ apache นั่นเอง

ในทางกลับกัน ถ้าหากผมทำการอัพโหลดไดเร็คทอรี่ใด หรือ ไฟล์ใด ๆ ก็ตาม ผ่านทางโปรแกรม FTP ซึ่งเป็นการล็อคอินโดยใช้ชื่อผู้ใช้งานที่เป็นของเราเอง , ไดเร็คทอรี่ หรือ ไฟล์นั้น ก็จะมีความเป็นเจ้าของ เป็นชื่อของเราเอง และสามารถ Set Permission ได้ปกติ ซึ่งวิธีอัพโหลดผ่านโปรแกรม FTP นั้น จะทำให้ไม่มีปัญหาเรื่องความเป็นเจ้าของนี้ครับ

แต่อย่างไรก็ตาม การติดตั้ง Extension , Template , Component ต่าง ๆ ก็ยังคงต้องผ่านการติดตั้งโดยใช้ Joomla อยู่ดี ดังนั้น หากสิ่งที่ติดตั้งลงไป ต้องมีการใช้งานในการเขียนข้อมูลลงเพิ่มเติมในภายหลัง ก็ขอให้ระวังในจุดนี้ด้วยครับ

Operation not permitted