l'éditeur php Yuzai vous présente aujourd'hui un problème clé lié à exec.Command et PATH - l'analyse des exécutables. En PHP, la fonction exec.Command est l'une des fonctions couramment utilisées pour exécuter des commandes externes, et PATH est la variable d'environnement système utilisée pour spécifier le répertoire dans lequel le système recherche les fichiers exécutables. Lorsque vous utilisez la fonction exec.Command pour exécuter des commandes externes, vous rencontrez parfois le problème que le fichier exécutable est introuvable. Dans ce cas, vous devez définir correctement le PATH pour vous assurer que le système peut résoudre correctement le chemin du fichier exécutable. . Ci-dessous, nous verrons en détail comment définir correctement PATH, ainsi que les problèmes et solutions d'analyse courants.
a un appel de commande très similaire
cmddirect := exec.command("theexecutable") cmdshell := exec.command(os.getenv("shell"), "-c", "theexecutable")
Les deux ont les mêmes paramètres d'environnement
envwithpath := append(os.environ(), fmt.sprintf("path=/real/existing/path/to/theexecutable/holder:%s", os.getenv("path"))) cmddirect.env = envwithpath cmdshell.env = envwithpath
Bien que cmdshell
按预期工作良好,但 cmddirect
ait échoué
exec: "theexecutable": executable file not found in $path
Pour exactement la même configuration d'environnement mentionnée, l'appel réussit également
cmdwhich := exec.command("which", "theexecutable")
Retournez correctement /real/existing/path/to/theexecutable/holder/theexecutable
Alors quelle est la raison de cette différence ?
P.S. Les deux méthodes ont définitivement les mêmes paramètres $path
. Par exemple
exec.Command("env") exec.Command(os.GetEnv("SHELL"), "-c", "env")
Les deux produisent la même path=....
séquence
Merci
exec.Command
使用 exec.LookPath
Trouvez le chemin d'accès à l'exécutable en utilisant votre PATH au lieu du chemin défini sur cmd.
Si vous souhaitez trouver un exécutable spécifique de manière plus fiable (ou générer un sous-shell), je vous recommande de définir Cmd.Path
sur le chemin d'accès à l'exécutable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!