Rumah >pembangunan bahagian belakang >Golang >Penghuraian boleh laku bagi exec.Command + PATH

Penghuraian boleh laku bagi exec.Command + PATH

PHPz
PHPzke hadapan
2024-02-09 08:03:27713semak imbas

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")

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

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam