ปรับแก้ config ระบบ wamp ของ thaiabc80 ให้ mysql กลับมาทำงาน

เล่า 2 เรื่อง ให้ลูกศิษย์ 2 รุ่นได้ฟังก่อนจบ
ดูฤกษ์แล้ว วันนี้ 17 กุมภาพันธ์ 2564 ติดตั้ง “โปรแกรมแก้วสารพัดนึก” อีกครั้ง (thaiabc80) โดยมีความเชื่อว่าน่าจะยังใช้งานได้บน win 10 หลังจากที่เคยปล่อยรุ่นสุดท้ายเมื่อ 7 พฤษภาคม 2555 (หยุดพัฒนาไปเกือบ 10 ปี) ซึ่งใช้มีโปรแกรมตัวหลัก คือ Apache 2.0.52 , PHP 5.2.5 , MySQL 5.5.16 พบว่า การติดตั้งราบรื่นด้วยดี เพียงกด next อย่างเดียว ก็จะได้แฟ้มทั้งหมดใน thaiabc บน drive c หลังติดตั้งเสร็จ ได้สั่ง start ทั้ง apache และ mysql ผ่าน icon บน desktop แล้วเปิดระบบโปรแกรมต่าง ๆ ทั้ง 12 โปรแกรม ผ่าน 127.0.0.1 บน browser ผลลัพธ์ผิดจากที่คาดไว้เยอะ คือ ล้มทุกตัว ดูแล้วน่าจะเป็นเพราะ mysql ไม่ start แต่ตรวจสอบแล้ว mysql ก็ start ได้ปกตินี่นา เพราะสั่งแสดงรายชื่อ database ได้ครบถ้วน ผ่าน command line ซึ่งเป็นการทำงานแยกส่วนกับ web server จึงใช้คำสั่งบนดอสสั่งตรวจสอบ module ด้วย php -m พบว่าขึ้น Warning หลายรายการ หนึ่งในนั้นได้พยายามเรียกใช้ php_mysql.dll จาก c:\windows\ext จึงเข้าไปตรวจสอบ php.ini ว่าเรียก php_mysql.dll ถูกต้องหรือไม่ ก็พบว่ากำหนด extension_dir ให้ชี้ไปยังห้อง windows แต่ระบบไม่ได้คัดลอกแฟ้ม extension ทั้งหมดไปไว้ในห้องนั้น จึงแก้ไขให้ extension_dir ชี้ไปที่ c:\thaiabc\php\ext ซึ่งเป็น folder ที่เก็บแฟ้ม module ทั้งหมด หลังจากนั้นระบบทั้ง 12 ระบบก็ตื่นขึ้น แต่ทดสอบบน win8.1 พบว่า phpmyadmin ถูกเรียกใช้ได้ปกติ ส่วนบน win10 มีปัญหาเรื่องค่า session ทำให้เปิด phpmyadmin ไม่ได้ จึงต้องไปเพิ่ม “c:\thaiabc\apahce2\error” ให้กับตัวแปร session_save_path ใน php.ini ซึ่งระบบทั้ง 12 ประกอบด้วย

  1. moodle
  2. moodle19
  3. learnsquare v2
  4. mambo
  5. oscommerce
  6. wordpress
  7. drupal
  8. calendar
  9. phpicalendar
  10. phpbb3
  11. senayan3
  12. phpmyadmin

ที่มารื้อฟื้นโปรแกรมแก้วสารพัดนึก มาติดตั้งใหม่ในวันนี้ เพราะไปเล่าให้ลูกศิษย์ฟัง จึงต้องกลับมาตรวจสอบว่ารุ่น 8.0 นั้น ยังทำงานได้บน win10 หรือไม่ และติดพันกับการอ่านข้อเสนอโครงงานของลูกศิษย์สาว 2 คนที่ไปฝึกงานที่โรงพยาบาล เค้าสนใจใช้อุปกรณ์ IoT วัดอุณหภูมิในตู้เก็บของ ทำให้นึกถึง Nodemcu Esp8266 ที่บันทึกและส่งค่าอุณหภูมิ ขึ้นไปยัง thingspeak.com เพื่อแสดงรายงาน และเชื่อมกับ IFTTT.com เพื่อส่งข้อมูลไปแจ้งเตือนบน Line ซึ่งสรุปได้ว่า ชีวิตคือการเรียนรู้

https://www.mathworks.com/help/thingspeak/use-ifttt-to-send-text-message-notification.html

https://www.ab.in.th/article/36/

ติดต่อ ADODB.Connection ผ่าน COM ไม่ได้

phpinfo com_dotnet in php.ini
phpinfo com_dotnet in php.ini

บรรลัดข้างล่างนี้ไม่ทำงาน หยุดเหมือน exit;
$conn = new COM(“ADODB.Connection”);
โปรแกรมทั้งระบบหยุดการทำงานไปเลย ติดต่อฐานข้อมูลไม่ได้ก็จบ
เหตุเกิดหลังติดตั้ง XAMPP
ซึ่งเดิมก็ใช้ Apache บน Win2008r2 อยู่แล้ว
ระบบส่วนใหญ่ใช้ mysql มีระบบหนึ่งยังใช้ access อยู่
… วันนี้มาเปิดจึงพบปัญหา

กว่าจะพบ แต่พบแล้วก็ร้อง อ๋อ ถึงบางอ้อจนได้
ไปพบว่าคำว่า
from PHP 5.4.5, COM and DOTNET is no longer built into the php core
ใน http://www.php.net/manual/en/com.installation.php

มาตรวจสอบ phpinfo ในเครื่องตัวเอง
พบว่ารุ่นของ PHP ที่ใช้คือ 5.5.9
และไม่พบ Section COM_DOTNET ใน phpinfo()

จึงเพิ่ม extension=php_com_dotnet.dll
เข้าไปใน php.ini แล้วก็ restart apache
ทำให้ code ทั้งหมดที่ติดต่อส่วนของฐานข้อมูล Access
กลับมาทำงานตามปกติ ดังเดิม

ระยะหลังมีหลายคำสั่งที่ php รุ่นใหม่ deprecated ออกไป
ถ้าจะใช้ก็ต้องเพิ่มค่า config com_dotnet  เอง
เป็นนโยบายตั้งแต่ php รุ่น 5.4.5
เล่าสู่กันฟังครับ .. หลังนั่งงมเข็มอยู่ตั้งนาน

ส่งเมลด้วยฟังก์ชัน mail ของภาษา php

28 ธ.ค.52 เหตุเกิด เพราะมีนักพัฒนาท่านหนึ่งต้องการใช้บริการส่งอีเมลด้วย php ผ่านฟังก์ชัน mail กับเครื่องบริการเว็บเครื่องหนึ่ง แล้วส่งไม่ออก เนื่องจากผู้ดูแลไม่เปิดบริการ smtp ทิ้งไว้ เรามีเครื่องบริการส่งเมลอยู่หลายเครื่องที่ติดตั้งไว้ เมื่อเปิดบริการส่งเมลในเครื่องที่ต้องการใช้ขึ้นใหม่แล้ว กลับพบว่าส่งอีเมลไม่ได้ ทำให้ต้องหาสาเหตุและแก้ปัญหา แล้วผลการดำเนินการก็เกิดบทเรียนให้เรียนรู้ ซึ่งเครื่องบริการเว็บที่ทดสอบในครั้งนี้มี 4 เครื่อง เครื่องส่งอีเมลเดิมมี 3 เครื่อง แต่ละเครื่องแตกต่างกันในวิธีแก้ปัญหา ซึ่งดำเนินการร่วมกับคุณอนุชิต ยอดใจยา และคุณธรณินทร์ สุรินทร์ปันยศ
     เครื่องบริการเว็บที่ 1 ของคุณอนุชิต ยอดใจยา ทดสอบแล้วไม่พบปัญหา คือ ทำงานร่วมกับ smtp server ที่มหาวิทยาลัยใช้งานทั้ง 3 เครื่องได้ปกติ ได้แก่เครื่อง it, linux หรือ cat โดยเครื่องนี้ใช้ php 5.2.6 แก้ไข smtp ผ่าน ini_set ได้ทันที แต่เครื่องนี้มิใช่เป้าหมายที่นักพัฒนาท่านนั้นต้องการ เครื่องบริการเว็บที่ 2 เป็นเครื่องเป้าหมาย ที่ต้องการทำให้ส่งอีเมลให้ได้ เครื่องใช้ php 4.3.4 พบว่าวิธีแก้ปัญหาคือ กำหนด SMTP และ sendmail_from ใน php.ini ได้พยายามใช้ ini_set และ mail() ที่กำหนด from แล้ว แต่ก็แสดง error message ว่า connection ไม่สำเร็จ สรุปว่าแก้ไข php.ini แล้วก็ส่งออก ไม่ว่ากับเครื่องบริการส่งเครื่องใด เครื่องบริการเว็บเครื่องนี้ก็ส่งได้จากเดิมที่ส่งไม่ได้เลย
     เครื่องบริการเว็บที่ 3 แก้ไขเหมือนเครื่องที่ 2 หรือ 1 ก็ยังส่งอีเมลไม่ได้ เครื่องทำหน้าที่เป็นทั้งเครื่องบริการ ส่งและเครื่องบริการเว็บในตัวเอง ส่วนซอฟท์แวร์ก็เหมือนกับเครื่องที่ 1 และถูกใช้มาโดยตลอด พบว่าวิธี แก้ปัญหาคือ กำหนด SMTP ใน php.ini จาก localhost เป็น ip address ของตนเอง ก็คาดว่าการใช้ localhost ไม่ได้เกิดจากการ config เครื่องบริการส่งเมลเป็นเหตุ แต่ตอนนี้ใช้ได้แล้วก็ไม่คิดจะเข้าไปแก้ไขอีก เครื่องบริการเว็บที่ 4 เป็นของคุณธรณินทร์ สุรินทร์ปันยศ ใช้บทเรียนที่ผ่านมาแก้ไขก็ยังไม่สำเร็จ พบ error ว่า connection กับ smtp server ไม่สำเร็จ  พบว่าวิธีแก้ปัญหาคือ ปิดบริการ Antivirus ของ Mcafee ซึ่งมี firewall ในตัว ก็ใช้ได้ปกติในทันที
+ SMTP = localhost
+ sendmail_from = a@a.com
+ mail(“x@x.com”,”hello”,”this is my test”,”From: y@y.com\nReply-To: z@z.com“);
+ ini_set(“SMTP”,”11.22.33.44″ );
+ ini_set(‘sendmail_from’, ‘b@b.com’);