ข้อแตกต่างระหว่าง exec, shell_exec, system และ passthru

ข้อแตกต่างระหว่าง exec, shell_exec, system และ passthru


คำสั่ง exec(), shell_exec(), system() และ passthru() ของ PHP ทำหน้าที่ในการสั่งให้โปรแกรมภายนอก ทำงานได้เหมือนๆกัน แต่ข้อแตกต่างของแต่ละคำสั่งมีอยู่เล็กน้อยครับ

exec(): ประมวลผลคำสั่งและส่งกลับข้อความเฉพาะบรรทัดสุดท้าย ที่เป็นผลลัพท์จากแอพพลิเคชั่นที่เรียกใช้ในรูปแบบข้อความ
shell_exec(): ประมวลผลคำสั่งและส่งกลับข้อความทั้งหมด ที่เป็นผลลัพท์จากแอพพลิเคชั่นที่เรียกใช้ในรูปแบบข้อความ ยกตัวอย่างเช่น การเรียกใช้โปรแกรมภายนอก เพื่ออ่านไฟล์ข้อมูล ที่ PHP ไม่รองรับเป็นต้น
system(): ประมวลผลคำสั่งและส่งกลับข้อความเฉพาะบรรทัดสุดท้าย ที่เป็นผลลัพท์จากแอพพลิเคชั่นที่เรียกใช้ในรูปแบบข้อความ และ พยายามจะล้างข้อมูลที่ส่งกลับ หลังจากส่งค่ากลับเรียบร้อยแล้วในแต่ละบรรทัด
passthru(): ฟังก์ชั่นนี้จะทำงานคล้ายๆกับ exec() ต่างกันที่จะไม่ส่งค่ากลับมายัง output แต่จะส่งข้อมูลกลับไปยัง Browser โดยตรงในรูปแบบไบนารี่ ซึ่งเราสามารถใช้ประโยชน์ได้เช่น การเรียกใช้โปรแกรมภายนอกเพื่อสร้างรูปภาพ และโปรแกรมส่งกลับรูปภาพเพื่อแสดงผลบน Browser ได้โดยตรง

ข้อมูลที่ละเอียกว่านี้ผมแนะนำให้อ่านที่เว็บของ PHP นะครับและโดยทั่วไปแล้ว Server มักปิดการใช้งานฟังก์ชั่นในกลุ่มนี้ เนื่องจากฟังก์ชั่นเหล่านี้สามารถประมวลผลไฟล์ที่อาจก่อให้เกิดปัญหากับ Server ได้อย่างร้ายแรง

คุณสามารถดูว่าฟังก์ชั่นเหล่านี้ถูกปิดการทำงานหรือไม่ โดยดูที่ disable_functions ใน phpinfo() ครับ

ที่มา : goragod.com

Published by

sornram9254

Ayutthaya Technical College/Voc.Cert.🛠️ | KMUTNB/B.S.Tech.Ed.⚙️ | Information Security Engineer 👨🏻‍💻| Penetration Tester👨🏻‍💻 | COYG🔴 Milan🔴⚫️ | Taylor Swift👩‍🎤 | ติ่งซีรีส์ญี่ปุ่น 🇯🇵

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.