มีน้องคนหนึ่งถามมา... อันที่จริงไม่ยากหรอก ตอบลงในนี้ดีกว่า เดี่ยวใครถามอีก จะโบ้ยให้มาอ่านที่นี่แหล่ะ
คำสั่งที่ 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
ลองดูครับ
ขอบคุณครับ
เพิ่งสังเกตุว่า 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