在Go中获取PHP配置变量

Lan*_*ton 2 php go

我想得到命令的输出,php -r 'echo get_cfg_var("some_var");'以检查预定义的值.目前,我有以下代码:

variableName := "default_mimetype"
cmd := exec.Command("php", "-r", "'echo get_cfg_var(\"" + variableName + "\");'")
out, err := cmd.CombinedOutput()
Run Code Online (Sandbox Code Playgroud)

跑完之后

err.Error() 回报 "exit status 254"

out"PHP Parse error: syntax error, unexpected end of file in Command line code on line 1"

导致此错误的原因是什么?我没有正确地逃避一些事情吗?

Tim*_*per 5

问题是你的论点.如果将已写入的内容更改为shell命令,则它将如下所示:

$ php -r "'echo get_cfg_var(\"default_mimetype\");'"
Run Code Online (Sandbox Code Playgroud)

您会注意到第二个参数周围有一组额外的引号会导致语法错误.您可以通过将您更改exec.Command为以下内容来解决此问题:

cmd := exec.Command("php", "-r", "echo get_cfg_var(\"" + variableName + "\");")
Run Code Online (Sandbox Code Playgroud)

  • @Langston换句话说,你似乎在你的问题中添加了无关的单引号,以便将单词组合成一个不需要的单个参数,并且一直传递到正在运行的命令中(其中 - 作为shell需要那些报价以逃避单词中断并将其删除). (3认同)
  • @ Langston:`exec.Command`的运行方式类似于exec*(3),而不是系统(3). (2认同)