รายละเอียดของการตอบ ::
เหตุผลนอกจาก xampp ใหม่กว่า และ appserv หยุดพัฒนาแล้วก็คือ เรื่องของการปรับค่า php.ini มาให้
xampp มันออกแบบมาสำหรับนักพัฒนาใช้ php.ini ที่ปรับมาก็เลยเหมาะสำหรับนักพัฒนามากกว่า
(อ้างอิง XAMPP is the most popular PHP
development environment)
ในขณะที่ appserv เป็นของเก่า ทำมาแต่เดิมเก่าก่อน อาจไม่รู้เรื่องนี้เลยไม่ได้ให้ความสำคัญมาก เน้นแค่ใช้งานได้ เลยปรับสภาพ php.ini เป็นแบบสำหรับ production ไม่ใช่ development
เวลามี notice อะไรก็เลยซ่อนหมดเลย ทั้งที่เราควรต้องรู้และแก้ไขได้ทันท่วงที
แถมยังตั้งค่าเหมาะสำหรับคนใช้ php 4 มาก่อน
ทำให้การเขียนใช้งานคงความเคยชินเอาไว้ ขาดการปรับปรุงที่ถูกต้องเหมาะสมกับเวอร์ชั่นของ php จริงๆ เช่น การเรียกใช้ตัวแปรแบบ global register ที่อยู่ๆจะเรียก $name จาก querystring ?name=value ก็เรียกเลย ไม่มีการประกาศเลยว่า $name = $_GET['name']; แบบนี้เป็นต้น
จากปัญหาข้างบน ปัญหาอื่นๆที่อาจจะตามมาก็คือเรื่องของความปลอดภัย เพราะการไม่ได้ปรับปรุงให้เหมาะสมกับ php รุ่นใหม่ๆ ทำให้การเขียนโดยเคร่งครัดน้อยลง ความปลอดภัยในโค้ดอาจหย่อนยาน และเป็นเหตุให้โดยเจาะเข้าช่องโหว่ได้
ในขณะที่ xampp ที่ใช้ php รุ่นใหม่ๆ มีการปรับ development โหมด การเขียนจึงต้องเคร่งครัดมากขึ้น ปลอดภัยมากกว่า
การปรับตัว
จริงๆก็ไม่ต้องปรับตัวอะไรมากมาย เวลาเริ่มเขียนงานใหม่ๆโดยใช้ xampp ก็คอยเปิดพวก error report ไว้ให้หมด (ค่าเดิมคือ E_ALL) อย่าไปปิด แล้วก็ให้มันแสดง error ด้วย (ตรวจใน php, .htaccess ด้วยว่าอย่าไปปิดจนกว่ามันจะอัพขึ้นสู่เว็บจริง ซึ่งเข้าสู่ production mode แล้วควรจะปิด)
เวลาเขียนถ้ามีบกพร่องเจอ notice, warning อะไรก็แก้ไป อย่าเอา @ ไปอุด เช่นการเรียกใช้ $_GET['name'] โดยไม่มีการส่ง querystring ?name= ไปอาจเจอเตือน undefine ได้ ก็ให้เอา if (isset($_GET['name'])) { คร่อมไว้ แบบนี้เป็นต้น หรืออาจเปลี่ยนไปใช้ฟังก์ชั่นอื่นแทน
สิ่งที่ต้องปรับตัวแต่ไม่ใช่เพราะ xampp
สิ่งหนึ่งที่ผมเห็นหลายคนเจอกันบ่อยๆเวลาทำงาน คือ เอาฟังก์ชั่นเก่าๆมาใช้ซึ่ง php เขายกเลิกใช้ไปแล้วในรุ่นใหม่ๆ หรือเอาฟังก์ชั่นใหม่จัดมาใช้ใน server ที่รัน php รุ่นเก่าๆ
ทางแก้
เวลาทำงานคุณต้องรู้ก่อนเลยว่าจะ limit php ต่ำสุดเท่าไหร่สำหรับงานนั้นๆ แล้วก็พยายามอย่าไปใช้ฟังก์ชั่นที่มันเลิกใช้แล้ว (deprecated) โดยใช้อันที่มันเป็นปัจจุบันแทน
และถ้ามันเป็นงานที่อาจใช้ version php dynamic มากๆ เช่น รู้แต่ว่าใช้เวอร์ชั่นใหม่ๆ แต่ไม่มีความแน่นอนว่าใหม่เท่าไหร่ ก็กำหนดไปเลยครับว่าต่ำสุด php 5.3 ใหม่สุด 5.5 แล้วก็เขียนโดยใช้ฟังก์ชั่นของ 5.5 แต่ว่าใช้ if (function_exists()) เช็คก่อนด้วย ถ้า server จริงที่ใช้เก่ากว่า ไม่มีฟังก์ชั่นนี้ก็หาอันอื่นมารองรับแทนด้วย อย่างนี้เป็นต้นครับ.