บน Windows PHP จะเรียกใช้ shell command อย่างไร?


มีน้องคนหนึ่งถามมา... อันที่จริงไม่ยากหรอก ตอบลงในนี้ดีกว่า เดี่ยวใครถามอีก จะโบ้ยให้มาอ่านที่นี่แหล่ะ

คำสั่งที่ PHP เรียกใช้ shell มีสองคำสั่งคือ
exec()
string exec ( string $command [, array &$output [, int &$return_var]] )
system()
string system ( string $command [, int &$return_var] )

วิธีเีรียกใช้งานก็แค่

echo system("dir");

...

...

...

แต่หลายคนคงไม่ผ่าน อาจเพราะหลายๆ สาเหตุ แต่สาเหตุที่เจอบ่อยๆ คือ ไม่มี permission เพียงพอที่จะสั่งใช้งานได้ยกตัวอย่างเช่น
Unable to fork อันนี้เจอประจำ สาเหตุเพราะว่า C:\WINDOWS\system32\cmd.exe ไม่มี permission ในการอ่านเขียน

อ่ะ ถ้าเป็นอย่างนี้ permission ที่ควรตั้งให้คือ Read & Execute, Read ส่วน write ก็เลือกได้ หากมีการเขียนไฟล์ นั่นก็เพียงพอแล้ว


แต่ส่วนใหญ่ Server ที่มีระดับ security มากๆ มักจะกำหนด PHP ให้เป็น safe mode   ดังนั้นเราต้องกำหนด safe_mode_exec_dir และ ใน php.ini ด้วยว่า folder จะสามารถใช้งานได้จากคำสั่ง system, exec

ลองดูครับ

หมายเลขบันทึก: 121548เขียนเมื่อ 23 สิงหาคม 2007 16:21 น. ()แก้ไขเมื่อ 20 มิถุนายน 2012 14:42 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (2)

เพิ่งสังเกตุว่า Windows XP ไม่มี หน้าต่างให้ set permission อย่างรูปข้างบน ไม่แน่ใจเหมือนกัน แต่เครื่องผมไม่มี แต่ไม่เป็นไร ไม่มี gui ให้กำหนดก็ไม่เป็นไร ก็เลยใช้ command line แทน โดยคำสั่ง cacls นั่นเอง

cacls c:\windows\system32\cmd.exe /E /G MACHINE\IUSR_MACHINE:R

* MACHINE\IUSR_MACHINE เ็ป็นชื่อเครื่อง
* R อาจเป็นค่าอื่นๆ เช่น R=Read / W = Write / C = Change(write) / F=Full control

รายละเอียดเพิ่มเติมลองดู link ด้านล่าง

Link
การใช้งาน CACLS.EXE

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท