Penghuraian boleh laku bagi exec.Command + PATH

PHPz
Lepaskan: 2024-02-09 08:03:27
ke hadapan
669 orang telah melayarinya

exec.Command + PATH 的可执行解析

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.

Kandungan soalan

mempunyai panggilan arahan yang hampir sama

cmddirect := exec.command("theexecutable")
cmdshell := exec.command(os.getenv("shell"),  "-c",  "theexecutable")
Salin selepas log masuk

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
Salin selepas log masuk

Walaupun cmdshell 按预期工作良好,但 cmddirect gagal

exec: "theexecutable": executable file not found in $path
Salin selepas log masuk

Untuk persediaan persekitaran yang sama yang dinyatakan, panggilan itu juga berjaya

cmdwhich := exec.command("which", "theexecutable")
Salin selepas log masuk

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")
Salin selepas log masuk

Kedua-dua keluaran path=.... turutan

yang sama

Terima kasih

Penyelesaian

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!