GORAGOD.com

freelance, web developer, web designer, hosting, domain name

เมื่อ fckeditor ทำงานผิดพลาด หรือไม่แสดงรูปตัวอย่าง

ปัญหาที่ผมพบในกรณีนี้ มีอยู่ว่า
1.ไม่สามารถอัปโหลดไฟล์ด้วย fckeditor ไปยัง path ที่ถูกต้องได้
2.ไม่สามารถเรียกใช้งาน fckeditor ได้ ทั้งๆที่การกำหนด path ทุกอย่างถูกต้อง
3.การแสดงรูปตัวอย่างตอนอัปโหลดไม่แสดง หรือ คืนค่า path ของรูปไม่ถูกต้อง

ปัญหานี้ทำเอาผมงงไป 2 อาทิตย์ กว่าจะหาคำตอบที่แท้จริงได้ ถึงแม้ว่าบางครั้งผมจะแก้ปัญหาชั่วคราวไปได้ แต่ก็ไม่สามารถแก้ไขได้อย่างสมบูรณ์

ปัญหานี้เกิดขึ้นเมื่อผมต้องการใช้ fckeditor มากกว่า 1 ตัวบนเว็บไซต์ โดยอยู่กันคนละโฟลเดอร์กัน โดยมีตัวหลักอยู่ในโฟลเดอร์ของ root ส่วนตัวอื่นๆ จะอยู่ตามโฟลเดอร์ย่อยต่างๆ ตามลำดับ

ผมพบว่า fckeditor จะทำงานได้กับตัวที่อยู่บน root เท่านั้น ไม่สามารถใช้งานใน โฟลเดอร์ย่อยๆ ได้ ซึ่งเมื่อมีการเรียกใช้งานในโฟลเดอร์ย่อยเมื่อไรมันจะถูกเรียกไปยังโฟลเดอร์ของ fckeditor ที่ root ทุกครั้ง

จากการตรวจสอบอย่างละเอียด ผมพบว่าปัญหามันเกิดจาก mod_rewrite ที่ทำการ redirect เพจไปยังโฟลเดอร์อื่นๆครับ

ยกตัวอย่าง ผมได้ทำการ redirect http://xxx.yyy.com ไปยัง โฟลเดอร์ xxx/ ซึ่งในโฟลเดอร์ xxx/ ก็มีโฟลเดอร์ xxx/fckeditor/ เช่นเดียวกับที่ root (fckeditor/) เมื่อผมทำการเรียกใช้ xxx/fckeditor/ บน xxx/ มันกลับพาไปเรียก fckeditor/ (ที่ root) แทน ทั้งๆที่ผมได้ทำการ mod_rewrite แล้ว

กลับไปดูหลักการของ mod_rewrite การทำ redirect เพจ mod_rewrite จะทำการตรวจสอบโฟลเดอร์ที่มีอยู่จริงก่อน ถ้าไม่มีถึงจะเรียกไปยังโฟลเดอร์หรือไฟล์ที่ mod_rewrite กำหนด (option L) ดังนั้นเมื่อทำการเรียก http://xxx.yyy.com/fckeditor/... มันจึงไปเรียกที่ http://www.yyy.com/fckeditor/... ซึ่งเป็นโฟลเดอร์ที่มีอยู่จริงแทน แทนที่จะไปยัง http://www.yyy.com/xxx/fckeditor/... ตามที่กำหนด

การแก้ไขปัญหานี้ทำได้ง่ายมากครับ แค่ rename ชื่อโฟล์เดอร์ของ fckeditor ตัวรองเป็นชื่ออื่น แล้วแก้ไขโค้ดให้ชี้ไปยังโฟลเดอร์ใหม่ให้ถูกต้อง

ปัญหานี้ทำให้ผมต้องระมัดระวังมากขึ้น ไม่ตั้งชื่อโฟลเดอร์ที่ root และในโฟลเดอร์ย่อยใดๆให้ซ้ำกันเลย เมื่อผมต้องใช้ mod_rewrite เพื่อป้องกันปัญหาที่ไม่คาดคิดครับ

ปล.ปัญหานี้ไม่เกิดกับไฟล์ที่ include นะครับ จะเกิดเฉพาะกับไฟล์ที่เรียกผ่าน url เท่านั้น
0SHAREFacebookLINE it!
^