editor php Yuzai hari ini memperkenalkan kepada anda isu utama yang berkaitan dengan exec.Command dan PATH - penghuraian boleh laku. Dalam PHP, fungsi exec.Command ialah salah satu fungsi yang biasa digunakan untuk melaksanakan arahan luaran, dan PATH ialah pembolehubah persekitaran sistem yang digunakan untuk menentukan direktori tempat sistem mencari fail boleh laku. Apabila menggunakan fungsi exec.Command untuk melaksanakan perintah luaran, anda kadangkala menghadapi masalah bahawa fail boleh laku tidak dapat ditemui Dalam kes ini, anda perlu menetapkan PATH dengan betul untuk memastikan sistem boleh menyelesaikan laluan fail boleh laku dengan betul. . Di bawah ini kita akan membincangkan secara terperinci cara menetapkan PATH dengan betul, serta masalah dan penyelesaian penghuraian biasa.
mempunyai panggilan arahan yang hampir sama
cmddirect := exec.command("theexecutable") cmdshell := exec.command(os.getenv("shell"), "-c", "theexecutable")
Kedua-duanya mempunyai tetapan persekitaran yang sama
envwithpath := append(os.environ(), fmt.sprintf("path=/real/existing/path/to/theexecutable/holder:%s", os.getenv("path"))) cmddirect.env = envwithpath cmdshell.env = envwithpath
Walaupun cmdshell
按预期工作良好,但 cmddirect
gagal
exec: "theexecutable": executable file not found in $path
Untuk persediaan persekitaran yang sama yang dinyatakan, panggilan itu juga berjaya
cmdwhich := exec.command("which", "theexecutable")
Kembali dengan betul /real/existing/path/to/theexecutable/holder/theexecutable
Jadi apakah sebab perbezaan ini?
P.S. Kedua-dua kaedah pasti mempunyai tetapan $path
yang sama. Contohnya
exec.Command("env") exec.Command(os.GetEnv("SHELL"), "-c", "env")
Kedua-dua keluaran path=....
turutan
Terima kasih
exec.Command
使用 exec.LookPath
Cari laluan ke boleh laku menggunakan PATH anda dan bukannya laluan yang ditetapkan pada cmd.
Jika anda ingin mencari boleh laku tertentu dengan lebih pasti (atau menghasilkan subkulit), saya syorkan tetapkan Cmd.Path
ke laluan ke boleh laku.
Atas ialah kandungan terperinci Penghuraian boleh laku bagi exec.Command + PATH. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!