วันนี้ขอนอกเรื่อง XUL หน่อย แต่ก็เกี่ยวกับ Project ที่ใช้ XUL นี่แหละ
คือกำลังจะทดสอบให้ Browser เปิดไฟล์ XUL ขึ้นมาโดยใช้ PHP อย่างแรกที่ต้องทำก็คือ ติดตั้ง WebServer
ตัวแรกที่แวบขึ้นมาในหัว ไม่ใช่อื่นไกล IIS นั่นเอง เพราะไม่ต้องไป Download โปรแกรมมาติดตั้ง แล้วก็จะใช้แค่ลองทดสอบอะไรง่ายๆ ไม่ได้จะเอาไปใช้งานจริงๆจังๆ ... หลังจากติดตั้ง IIS แล้วก็ถึงคราวของ PHP ซึ่งก็ไป Download ตัวใหม่ล่าสุดมาจากเว็บไซต์ แต่ปรากฏว่า เข้าเว็บ http://www.php.net ไม่ได้! ก็ลองค้นจากอินเตอร์เนตเพื่อหา Mirror ยังไม่ทันจะหาเจอ ก็ปรากฏว่าเว็บเข้าได้แล้ว -_- (เมื่อกี๊เข้าหลายครั้งมากเลยนะ ไม่ใช่ครั้งเดียว)
พอติดตั้ง PHP เข้ากับ IIS เรียบร้อย ก็ทำตามที่เว็บ
SitePoint แนะนำ โดยการแก้ไข php.ini เพื่อให้สามารถเขียน php tag ปนกับ xul tag ได้ จากนั้นก็ไฟล์ .htaccess เพื่อทำให้ไฟล์นามสกุล XUL ถูกมองว่าเป็นไฟล์ PHP
หลังจากแก้ไฟล์ php.ini แล้ว จะมาสร้าง .htaccess ก็ปรากฏว่า สร้างไฟล์ชื่อนี้ไม่ได้ เพราะ Windows ไม่ย๊อมไม่ยอมให้มี "." นำหน้าไฟล์ ... ไม่รู้อะไรมากระแทกหัว ความคิดแรกที่ผุดออกมาคือ เปลี่ยนไปใช้ Apache เป็น WebServer ดีกว่า (โปรดอย่าสงสัย บอกแล้วว่ามีอะไรมากระแทกหัว)
ก็ไป Download ไฟล์ Apache Http Server มาติดตั้ง แล้วก็ตามด้วย PHP ซึ่งก็ไปอ่าน
วิธีติดตั้ง PHP บน Apache ในนั้นบอกว่ามีวิธีติดตั้งอยู่ 2 วิธี คือแบบเป็น CGI กับแบบเป็น Module แบบ CGI เค้าบอกว่ามันเสี่ยงต่อการโดนโจมตี (ด้วยอะไรไม่รู้) ก็เลยใช้วิธีติดตั้งแบบให้ PHP เป็น Module ของ Apache
แล้วปัญหาก็มาอีก คือมี Big Bug ของ PHP 5.1.x ที่ทำให้ไม่สามารถใช้งาน PHP บน Apache 2.2.x ได้!! (หรือเป็น Bug ของ Apache ก็ไม่รู้) ... ใช้งานไม่ได้เลยนะ คือไม่สามารถ start server ได้เลย ... แต่ปัญหานี้ก็มีคนแก้ไขแล้ว โดยเข้าไปดูได้ที่
apachelounge.com ซึ่งในขณะที่กำลังอ่านอยู่นั้น สมองก็เริ่มคิดได้ว่า ถ้าตั้งชื่อไฟล์ .htaccess ไม่ได้ ... มันหมายความว่า Windows มันตั้งชื่อไฟล์นี้ไม่ได้ ไม่ใช่ IIS มันตั้งชื่อไฟล์นี้ไม่ได้! ... อยากโดดถีบตัวเอง -_-
และแล้วก็ไปหาว่าจะใช้ .htaccess ใน Windows ยังไง ก็ได้คำตอบว่า ตั้งเป็นชื่อไฟล์ ht.acl ก็ได้ แต่ไม่แน่ใจว่ามันใช้ได้ เพราะว่าหลังจากใส่ข้อมูลลงไปในไฟล์นี้แล้ว ก็ลองเปิดไฟล์ XUL จาก IIS ดู ก็ยังไม่ได้อยู่ดี ... มันขึ้นมาให้ Download ไฟล์ ไม่ขึ้นเป็น Web Application ... จริงๆในเว็บเค้าก็บอกว่า เค้าใช้ Apache เป็น Web Server นะ แต่ผมดื้อน่ะ อยากใช้ตัวอื่นมากกว่า
แล้วในที่สุดก็เลิกดื้อ ใช้ Apache จนได้ แต่ก่อนนั้น ก็ต้องจัดการกับปัญหาที่ลง PHP บน Apache ไม่ได้ก่อน ซึ่งขั้นตอนก็ไม่ถึงกับยุ่งยาก แต่ก็ไม่ได้สะดวกสบาย ...
พอจัดการเสร็จแล้ว ก็จะแก้ DocumentRoot ของ Apache ให้ชี้ไปที่ๆเก็บไฟล์ไว้อยู่ ... ปรากฏว่าไม่ได้ครับ มันหาไฟล์ไม่เจอ ไม่รู้ทำไม คิดว่าคงต้องแก้หลายที่ ก็เลยแก้กลับเป็นอย่างเดิม แล้ว Copy ไฟล์มาดีกว่า (เลิกดื้อแล้ว) ... จากนั้นก็ Restart WebServer แต่ปรากฏว่าพอเรียก url มันจะเรียกค้างอยู่อย่างนั้น ไม่มีอะไรขึ้นมาเลย ... งงน่ะสิ
ก็ลองแก้ DocumentRoot กลับไปกลับมาก็แล้ว Restart Server ก็แล้ว ลองไปไล่ดูวิธี Install PHP บน Apache ก็แล้ว ก็ไม่เจอจุดที่น่าสงสัยเลย ... เกือบจะถอดใจแล้ว ก็ลอง Stop แล้ว Start Server อีกที ปรากฏว่าได้แฮะ ... สรุปก็ไม่รู้ว่าเป็นเพราะอะไรเหมือนกัน ลองแก้ Configuration ให้เป็นแบบที่ผิด ก็ไม่ได้ผลลัพธ์เหมือนตอนแรก ... งงน่ะสิ
ปัญหายังไม่หมด! หลังจากใช้ PHP บน Apache ได้แล้ว แต่ XUL ล่ะ ... ยังไม่ได้! ทำตามวิธีที่ SitePoint บอกก็ไม่ได้ผล มันขึ้นมาว่า "xml declaration not at start of external entity" แล้วก็ชี้ตรงที่ "" ผมก็ลองหาจาก Google ซักพักใหญ่ บางที่บอกว่าเพราะมี Space อยู่ ลองแก้ดู ก็ไม่ได้ผล ... ก็หาวิธีจนต้องไปแก้ config ของ Apache ให้ไฟล์นามสกุล XUL มี Content-Type เป็น "application/vnd.mozilla.xul+xml" ... ซึ่งตอนแรกเค้าก็ใช้วิธีตั้ง Content-Type ด้วย PHP แต่ในเมื่อมันไม่ได้ผล ก็เลยต้องมาแก้ config แทน ...
สรุปตอนนี้ใช้ได้แล้ว Perfect! ... หลังจากนั่งแก้ นั่งลง ประมาณ 3 ชม. OH! CRAP ...