เมื่อ CGI มีข้อผิดพลาด |
เมื่อ CGI มีข้อผิดพลาด ไม่ทำงานตามปกติ คราวนี้เราจะมากล่าวถึงปัญหา ข้อผิดพลาดต่างๆ ที่มักจะเกิดขึ้นให้พบเห็นกันอยู่บ่อยๆ เวลาที่เราจะติดตั้งหรือเขียน หรือนำ CGI Script มาใช้งาน (ไม่ว่าจะเขียนขึ้นเอง หรือ โหลด script สำเร็จรูปมาก็ตาม) ซึ่งปกติที่เราจะพบเห็น ก็มักจะเป็น Error message สั้นๆ ที่ไม่สื่อความหมายให้คาดเดาได้ซักเท่าไหร่ (เช่น 'Internal Server Errot 500') แล้วก็บอกให้ติดต่อกับผู้ดูแลระบบท่าเดียว โดยเราจะอ้างอิงถึงโปรแกรมที่เขียนด้วย ภาษา Perl เป็นหลัก แต่ก็สามารถจะนำไปใช้เป็นความรู้ กับภาษาอื่นๆได้ด้วยเช่นกัน Error 500 ข้อความแสดงข้อผิดพลาดว่า 'Error 500' หรือ 'internal server error' มีสาเหตุ มาจากปัญหาหลายๆอย่าง มากจนไม่อาจจะคาดเดาได้ง่ายๆ ซึ่งปัญหาที่มักจะเจอกันบ่อยๆ ก็จะมีดังต่อไปนี้ ให้ตรวจสอบดูให้ดีว่ามีจุดไหนที่เราทำผิดพลาดหรือไม่ Error 404 ข้อผิดพลาดรหัส 404 หมายถึงว่า หาเอกสารที่เราเรียกใช้ไม่พบ เราก็มักจะพบกับคำว่า Not found ซึ่งจะพบได้ทั้งกับเอกสาร HTML และ CGI Script ได้เช่นกัน วิธีแก้ไข ก็คือให้ตรวจสอบ URL ที่คุณเรียกใช้โปรแกรม และ path ที่คุณเรียกใช้โปรแกรม ที่เจอกันบ่อยๆก็คือมักจะสับสนในการเรียกใช้ ระหว่าง path ของโปรแกรมใน server และ path ของโปรแกรมที่จะนำมาใช้เป็น URL สำหรับเรียกใช้โปรแกรม Document contains no data บางครั้งคุณอาจจะเจอข้อผิดพลาดแจ้งมาว่า 'Document contains no data' ให้ตรวจสอบว่า script ของคุณให้ผลลัพธ์ของ content-header ถูกต้องหรือไม่ นอกจากนี้อาจจะเกิดจากปัญหาอื่นได้ด้วย เช่น การ time out อาจจะเป็นเพราะโปรแกรม ของคุณ ใช้เวลาในการประมวลผลนานเกินไป จนทำให้การติดต่อขอข้อมูลของ HTTP นั้นหยุดลง เพราะว่าเกินเวลา (time out) เช่นอาจจะมีการประมวลผลเยอะจริงๆ หรือมีวงรอบการทำงานที่ไม่มีวันสิ้นสุดเกิดขึ้น หรืออาจจะเกิดเพราะว่าโปรแกรมทำงาน ได้ถูกต้องจริงๆ แต่ว่าผลลัพธ์นั้นไม่ได้ถูกแจ้งออกมาทาง STDOUT ที่ถูกต้อง ซึ่งก็ จะไม่มีข้อมูลส่งไปยัง Browser ที่เรียกใช้งานโปรแกรม cgi script นั้นๆ ทางที่ดี ถ้าคุณสามารถใช้ shell ได้ ให้คุณเข้า shell แล้วลองเรียกโปรแกรม cgi script ขึ้นมาใช้งาน ตรวจสอบว่าผลลัพธ์นั้นออกมาทาง STDOUT ถูกต้องหรือไม่ โปรแกรมไม่ทำงานแต่โชว์ Source code ออกมาหมดเลย ส่วนมากมักจะเกิดจากการใส่ script ไว้ผิดที่ ซึ่งใน sub directory ที่ใส่ไว้นั้น ไม่ได้กำหนดให้นำเอกสารไปทำงาน (execute) หรือเกิดจากการที่ระบุนามสกุล ของแฟ้มข้อมูลโปรแกรมไม่ถูกต้อง (บางที่ต้องกำหนดเป็น .pl บางที่ต้องกำหนดเป็น .cgi บางที่ได้ทั้งสองแบบ ฯลฯ) ซึ่งโดยปกติถ้าโปรแกรมไม่ได้กำหนดให้เรียกทำงาน มันก็จะถูกเรียกเหมือนกับเป็นเอกสารหนึ่งใน web server ซึ่งก็จะส่งผลลัพธ์ ออกมาเป็น Source code นั่นเอง เรื่องของรูปแบบการ Upload (ASCII/BINARY) ปัญหานี้เกิดขึ้นเพราะว่าความแตกต่างกัน ของรหัสที่นำมาใช้เป็นรหัส ขึ้นบรรทัดใหม่ในระบบปฎิบัติการ DOS/Windows และ Unix ในระบบ DOS/Windows จะใช้ตัวอักษรรหัสสองตัวคือ CR และ LF (Line Feed) เพื่อเป็นรหัสขึ้นบรรทัดใหม่ ในขณะที่ระบบปฎิบัติการ Unix ใช้ตัวอักษรรหัส ตัวเดียวคือ LF เป็นรหัสขึ้นบรรทัดใหม่ ซึ่งเมื่อเราเขียนโปรแกรม script และจัดเก็บแบบ DOS/Windows แล้วนำไปเรียกใช้ในระบบ Unix จะมีตัว อักษรรหัส CR เกินมาอีก 1 ตัว อาจจะมีผลให้โปรแกรมทำงานผิดพลาดได้ ในการ Upload ใน FTP เวลาที่จะ Upload เอกสารที่เป็นโปรแกรม Script จึงต้อง Upload แบบ ASCII จึงจะทำงานได้ถูกต้อง
<- - - - กลับหน้าหลัก. |