multiple upload image -uploadify ไม่ทำงานบน codeigniter

multiple upload image -uploadify ไม่ทำงานบน codeigniter

เรื่องนี้มันเริ่มตอน meewebfree v4 นี่แหล่ะครับ ที่เป็นครั้งแรกที่ผมเอา codeigniter มาเขียนเว็บให้ตัวเอง (ปกติเอามาเขียนให้ลูกค้ามาโดยตลอด เพราะว่าของตัวเองไม่ได้มีโอกาสทำสักที)

ปัญหามันก็มาเกิดอีตอนทดสอบ upload รูปภาพแบบหลายไฟล์ในครั้งเดียว (multiple upload image) ซึ่งเครื่อง pc ตัวเองใช้ได้ แต่ server ใช้ไม่ได้

ก็พยายามใจเย็น ค่อยๆคิด ค่อยๆไล่ ตีกรอบลงมาเรื่อยๆว่ามันน่าจะเกิดจากอะไรได้บ้าง ไม่ว่าจะเป็นเรื่องพื้นที่ เรื่อง permission ไฟล์ path ทุกอย่าง ครบถ้วนสมบูรณ์ ไม่มีอะไร error แต่จากการไล่ทำให้พบอย่างหนึ่งว่า file และข้อมูลต่างๆไม่ถูกส่งไปยังหน้ารับ upload (หน้าที่ทำหน้าที่รับไฟล์จากการ post มา upload ขึ้น server)

แล้วทำไมมันถึงไม่ส่งค่ามาล่ะ? ในเมื่อทุกอย่างก็ตั้งค่าถูกต้อง

ผมไล่มาจนตันอยู่ที่ตรงนี้ รวมกับ วันนี้ต้องรีบออกไปดูหนังด้วย เลยพักไว้ก่อนดีกว่า ตั้งใจว่าค่อยไปคิดอีกทีตอนนั่งรถเมลก็ได้ เผื่อว่าจะคิดออก

แล้วตอนรอรถเมลก็เอาเรื่องนี้มาคิดอีกครั้ง จนกระทั่งนึกขึ้นมาได้ว่า เรื่องนี้เคยเกิดขึ้นมาแล้วครั้งหนึ่ง ตอนที่เอา wordpress มาใช้ ตอนนี้ wordpress ที่มีเครื่องมือ multiple upload image เหมือนกัน (แต่ไม่รู้ว่าจะเป็นสคริปเดียวกันหรือไม่ก็ตาม) ก็เคยเจอปัญหาเดียวกันนี้มาแล้ว แต่ตอนนี้ wordpress มี error แจ้งทำให้ไปค้นวิธีแก้ได้แต่คราวนี้มันเงียบเลย

ระหว่างอยู่บนรถเมลก็เปิด netbook ไปค้นข้อมูลไป จนค่อนข้างเชื่อว่า ปัญหาที่เกิดขึ้น ก็เกิดมาจาก mod_security ของ apache ที่ทำหน้าที่ในการกรอง content ที่แปลกๆที่ส่งมาเข้า server นั่นเอง

แล้วการทดสอบ(ระหว่างการเดินทาง) ก็เกิดขึ้นรวมทั้งให้ผลที่หน้าพอใจ คือเมื่อปิด mod_security ผ่าน .htaccess ด้วยโค้ดนี้

<IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule>

เว็บก็กลับมา upload ได้ทันที แต่ก็ยังไม่จบแค่นั้นหรอก เพราะว่าระหว่างหาข้อมูลทำให้พบว่าการปิด mod_security สามารถทำแบบระบุเจาะจงเป็นไฟล์ได้ แต่อันเนื่องมาจาก codeigniter framework ไม่ได้ทำงานเป็นไฟล์ เพราะมีการทำงานที่ซับซ้อนกว่านั้นเลยยากที่จะระบุว่าจะปิดเฉพาะไฟล์ไหน จึงพักไว้ค่อยกลับมาต่อที่บ้าน

พอกลับบ้านมาก็ไล่ต่อ จนพบว่าเราสามารถสั่งปิด mod_security บาง URL ผ่าน .htaccess ได้ดังนี้

<IfModule mod_security.c>   SetEnvIfNoCase Request_URI ^/pathfiletowantdisable$ MODSEC_ENABLE=Off </IfModule>

จากโค้ดนี้ url เช่น web.meewebfree.com/pathfiletowantdisable ก็จะถูกปิดการทำงาน mod_security

ก็เป็นอันจบปัญหาอันปวดหัวไปได้อีกเรื่องนึง

Create: Modify : 2010-04-17 23:43:23 Read : 6251 URL :