หน้าเว็บ

วันจันทร์ที่ 18 มีนาคม พ.ศ. 2556

ปัญหา library upload ของ CodeIgniter เมื่อใช้งานบนโฮสต์

เนื่องจากปกติเวลาอัพโหลดไฟล์ CodeIgniter จะมี Library Upload ให้เราใ้ช้งานอยู่แล้ว
แต่อยู่ดี ๆ พออัพโหลดขึ้นโฮสต์ปรากฏว่ามันขึ้น Error เตือนแปลก ๆ ทั้ง ๆ ที่รันในเครื่องได้ปกติ

การแสดง Error แบบนี้จริงอยู่เมื่อเข้าไปเช็คไฟล์มันก็สามารถอัพโหลดไฟล์ได้ปกติ แต่ปัญหาคือเมื่อมี Output อะไรบางอย่างแสดงออกมา ถ้าหน้านั้นมีการใช้ Session จะทำให้ไม่สามารถเก็บค่า Session ไำด้

เนื่องจากเหตุผลด้าน Security บางอย่าง ทำให้โฮสต์ต้องปิด Extension บางตัวไป ทำให้ฟังก์ชั่นบางตัวไม่สามารถใช้งานได้ ให้แก้โดยการเติม @ เข้าไปหน้าฟังก์ชั่น escapeshellarg

ดังนั้นเราจำเป็นต้องซ่อน Error ไว้ (เหมือนซ่อนฝุ่นไว้ใต้พรม)

ก่อนอื่นให้เข้าไปที่ system\libraries\Upload.php  จากนั้นเปิดไฟล์ขึ้นมา ไปยังบรรทัด 1066

แก้จาก

$cmd = 'file --brief --mime ' . escapeshellarg($file['tmp_name']) . ' 2>&1';

เป็น

$cmd = 'file --brief --mime ' . @escapeshellarg($file['tmp_name']) . ' 2>&1';

จากนั้นอัพโหลดไฟล์ Upload.php ขึ้นโฮสต์ค่ะ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น