เมื่อ 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 เท่านั้น
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 เท่านั้น