GyaanSetu PHP

PHP, Laravel และ WordPress

32 articlesDeep, practical knowledge

ข้อมูลรั่วไหลของ CoopCycle เผยที่อยู่ลูกค้าหลายพันรายผ่านช่องโหว่ของ GET Endpoint ที่ไม่มีการตรวจสอบ

การขาดการกำหนดค่าความปลอดภัยบน endpoint `/api/stores/{id}/addresses` ทำให้ผู้ใช้ CoopCycle ที่ผ่านการยืนยันตัวตนสามารถไล่ดูไอดีของร้านค้าเพื่อเก็บรวบรวมชื่อ-นามสกุล ที่อยู่ และรหัสไปรษณีย์ ซึ่งส่งผลกระทบต่อความเป็นส่วนตัวของสหกรณ์หลายแห่ง

PHP · 3 min read

การถอนการติดตั้ง PrestaShop อาจลบการตั้งค่าของโมดูลอื่นผ่านตาราง Config ที่ใช้ร่วมกัน

จากการตรวจสอบโมดูล PrestaShop สาธารณะ 57 โมดูล พบว่าการใช้คีย์การตั้งค่าที่ไม่มีการระบุ namespace และการเรียกใช้ Configuration::deleteByName อย่างไม่ระมัดระวัง ทำให้ขั้นตอนการถอนการติดตั้งของโมดูลหนึ่งไปลบการตั้งค่าของส่วนขยายอื่นที่ไม่เกี่ยวข้อง ซึ่งสร้างความสับสนให้กับผู้ประกอบการ

PHP · 4 min read

เลิกมองข้าม Deprecations: Shopware แยก @deprecated ออกจากการปรับแต่ง API

Shopware 6.7.14.0 เพิ่ม namespace ของ attribute BC-Change ใหม่ เพื่อแยกการยกเลิกการใช้งาน (deprecations) ที่สำคัญออกจากเพียงการปรับแต่ง API ทั่วไป ช่วยให้นักพัฒนาสามารถจัดการกับคำเตือน CallSiteCompatibilityChange และ ExtenderCompatibilityChange ได้อย่างตรงจุดก่อนการเปิดตัวเวอร์ชัน 6.8

PHP · 1 min read

นักบัญชีที่มีสิทธิ์อ่านอย่างเดียวสามารถยกเลิกใบแจ้งหนี้ใน Akaunting ได้ จนกระทั่งมีการออกแพตช์ 3.2.0

ผู้ใช้ที่มีสิทธิ์อ่านอย่างเดียวสามารถเรียกใช้งาน endpoint 'markCancelled' ที่ไม่ได้ระบุไว้ในเอกสารผ่านคำขอแบบ GET ซึ่งส่งผลให้ข้อมูลการชำระเงินถูกลบและทำให้เส้นทางการตรวจสอบ (audit trails) เสียหาย บั๊กนี้เกิดจากการที่รายการอนุญาต (allowlist) ไม่ได้รวมวิธีการเปลี่ยนสถานะเอาไว้ และได้รับการแก้ไขแล้วในเวอร์ชัน 3.2.0

PHP · 2 min read

Laravel 13 แทนที่ $fillable, $table และ $casts ด้วย Native PHP Attributes

Laravel 13 เปิดตัว PHP attributes แบบ built-in สำหรับการกำหนดค่า Model ช่วยให้คุณเปลี่ยนจากการใช้ property แบบเดิมอย่าง $table, $fillable และ $casts มาเป็นการใช้ annotation ที่มีการระบุประเภท (typed) และทำงานผ่าน reflection ได้ โดยไม่ส่งผลกระทบต่อโค้ดเดิมที่มีอยู่

PHP · 4 min read

บล็อก wp-cron.php ที่ระดับเซิร์ฟเวอร์เพื่อประหยัด PHP Workers และป้องกันปัญหา CPU พุ่งสูง

การตั้งค่า DISABLE_WP_CRON = true เป็นเพียงการหยุดไม่ให้ WordPress ทำการส่ง loopback request ของตัวเองเท่านั้น แต่ URL ของ wp-cron.php ยังคงสามารถเข้าถึงได้ และอาจถูกโจมตีอย่างหนักจากผู้ไม่หวังดี ซึ่งจะทำให้ PHP workers หมดลงและก่อให้เกิดปัญหา Denial-of-Service บน Shared Hosting

PHP · 4 min read

การแพตช์ InvoiceShelf ปิดช่องโหว่ระดับ 8.7 คะแนน ที่เปิดโอกาสให้เจ้าของระบบสามารถเข้ายึดบัญชีผู้เช่ารายอื่นได้

ช่องโหว่นี้มีสาเหตุมาจากการทำ route-model binding ของ Laravel และการขาดการตรวจสอบขอบเขตของผู้เช่า (tenant-scope check) ซึ่งเปิดโอกาสให้เจ้าของระบบสามารถร้องขอ ID ของผู้ใช้รายใดก็ได้เพื่อเขียนทับข้อมูลประจำตัว ส่งผลให้บัญชีของผู้เสียหายถูกย้ายไปยังบริษัทของผู้โจมตีได้อย่างสมบูรณ์

PHP · 2 min read

นักพัฒนา Magento ลดการเรียกใช้ DB จาก 300 เหลือ 1 ครั้ง แต่สินค้าที่หมดสต็อกกลับหายไป

การเปลี่ยนจากการเรียกใช้ repository 300 ครั้งต่อหนึ่งผลิตภัณฑ์ มาเป็นการใช้ collection query เพียงครั้งเดียวช่วยลดจำนวนการ query ลงอย่างมหาศาล แต่ตัวกรองสต็อกที่มีมาให้ในตัวของ Magento กลับคัด SKU ที่มีจำนวนเป็นศูนย์ออกทั้งหมด ทำให้ลูกค้าต้องพบกับแคตตาล็อกสินค้าที่ไม่สมบูรณ์

PHP · 3 min read

นักพัฒนาเสียเวลาหลายชั่วโมงกับหน้ายืนยันอีเมลของ WP – นี่คือวิธีแก้ด้วยโค้ดเพียงบรรทัดเดียว

ตั้งแต่ WP 5.3 เป็นต้นมา หน้าการยืนยันอีเมลผู้ดูแลระบบจะปรากฏขึ้นทุกๆ ไม่กี่เดือน ทำให้การรัน Playwright แบบ unattended ต้องรอปุ่มที่ไม่เคยแสดงขึ้นมา การเพิ่มการตรวจสอบ URL อย่างรวดเร็วและคลิก “I’ll wait” จะช่วยให้การทำงานอัตโนมัติกลับมาทำงานได้อย่างแม่นยำและคาดการณ์ได้อีกครั้ง

PHP · 3 min read

Etcd ลดข้อผิดพลาดในการกำหนดเส้นทางวิดีโอใน APAC เหลือเพียง 1 วินาที ยุติปัญหาการส่งข้อมูลผิดพลาดระหว่างโซลและโตเกียว

ด้วยการย้ายข้อมูลการกำหนดเส้นทางเฉพาะภูมิภาคไปยัง etcd โดยใช้ watch, lease และ CAS primitives ทำให้แพลตฟอร์มสามารถส่งการเปลี่ยนแปลงไปยังเราเตอร์ทั้งแปดตัวได้ภายในเวลาประมาณหนึ่งวินาที นอกจากนี้ยังมี Go sidecar ขนาดเล็กที่ทำหน้าที่เขียนการตั้งค่าลงใน shared memory ช่วยให้ PHP สามารถตอบสนองคำขอด้วยการอ่านข้อมูลที่มีความหน่วงเป็นศูนย์ (zero-latency)

PHP · 4 min read

Croatia’s 2026 E-Invoice Rule Forces PHP Apps to Rewrite 62 Validation Rules

From 1 January 2026 every B2B transaction in Croatia must pass a Schematron file written in XSLT 2.0, but PHP’s built-in libxslt only supports XSLT 1.0. Developers must either add a native Saxon-C extension, call an external service, or re-code the 62 checks in PHP to keep invoicing alive.

PHP · 4 min read

วิธีที่ Edge-Side Includes ช่วยลดการโหลดหน้าเพจยอดนิยมจาก 4,000 เหลือเพียง <50 คิวรีต่อนาที

ทีมงานได้แบ่งหน้าแรกออกเป็น 3 ส่วน ได้แก่ ตารางวิดีโอ, ตัวสลับภาษา และส่วนหัวแบบสด โดยใช้ค่า Varnish TTL ที่ 60 วินาที, 24 ชั่วโมง และแบบไม่เก็บแคช พร้อมทั้งตัดคุกกี้ออกจากส่วนที่ไม่ระบุตัวตน และใช้ surrogate keys เพื่อให้สามารถล้างแคชได้ทันที

PHP · 3 min read

นโยบาย Noindex ของทีม SEO เมื่อมีรายการน้อยกว่า 3 รายการ ทำให้หน้าหมวดหมู่หายวับไปกับตา

ตาราง ‘seo_unlocks’ ใหม่จะบันทึกช่วงเวลาแรกที่หมวดหมู่มีรายการที่ใช้งานอยู่ครบ 3 รายการ เพื่อให้หน้านั้นสามารถถูกทำดัชนี (index) ได้อย่างถาวร ซึ่งจะช่วยป้องกันปัญหาเดิมที่หน้าเว็บเคยหายไปจาก Google และต้องใช้เวลาหลายสัปดาห์กว่าจะกลับมาติดอันดับได้อีกครั้ง

PHP · 3 min read

การใช้ดัชนีคู่ OpenSearch-SQLite ช่วยแก้ปัญหาผลลัพธ์ว่างเปล่าสำหรับผู้ใช้ตัวอักษรละตินได้อย่างไร

ด้วยการส่งคำค้นหาผ่านฟิลด์ Latin แบบ fuzzy และ CJK bigram analyzer ของ OpenSearch เป็นอันดับแรก แล้วจึงสลับไปใช้ SQLite FTS5 เมื่อเกิด timeout ทำให้ทีมงานสามารถลดอัตราการไม่พบผลลัพธ์ลงเหลือเพียง 2.1% โดยไม่เกินเพดานความหน่วงที่ 20 มิลลิวินาที

PHP · 4 min read

Cloudflare Workers ช่วยลดการใช้ CPU ในการสร้าง Thumbnail ของเว็บไซต์วิดีโอลงจนเหลือศูนย์

ด้วยการย้ายการสร้าง Thumbnail ไปยัง Cloudflare Workers แพลตฟอร์มโฮสต์วิดีโอนี้สามารถกำจัดภาระการประมวลผลรูปภาพทั้งหมดออกจากเซิร์ฟเวอร์ต้นทาง บรรลุอัตรา Edge Cache Hit Rate ที่ 96% และสามารถส่งมอบการตอบสนองของรูปภาพได้ภายในเวลาไม่ถึงหนึ่งวินาทีทั่วโลกอย่างสม่ำเสมอ

PHP · 3 min read

การตลาดอัตโนมัติแบบโอเพนซอร์สไม่จำเป็นต้องหมายถึงการยอมยกข้อมูลของคุณให้กับผู้ให้บริการ SaaS โดย Mautic ช่วยให้การทำแคมเปญอีเมล

การตลาดอัตโนมัติแบบโอเพนซอร์สไม่จำเป็นต้องหมายถึงการยอมยกข้อมูลของคุณให้กับผู้ให้บริการ SaaS โดย Mautic ช่วยให้คุณสามารถจัดการแคมเปญอีเมล การติดตามผู้ติดต่อ และการฟูมฟักลีด (lead nurturing) ได้ภายใต้การดูแลของคุณเอง...

PHP · 5 min read

หากคุณใช้เวลาหลายปีในการดูแลรักษา business logic ภายในแอปพลิเคชัน PHP การดูบทเรียน Model Context Protocol อาจ

หากคุณใช้เวลาหลายปีในการดูแลรักษา business logic ภายในแอปพลิเคชัน PHP การดูบทเรียน Model Context Protocol อาจให้ความรู้สึกเหมือนกำลังยืนอยู่หน้าประตูที่ถูกล็อคไว้ แทบทุกคู่มือ...

PHP · 7 min read