我创建了一个自定义命令。我想用monolog记录用户使用参数和选项轻触的命令
例如:php bin/console app:my_command argument1 --option=1234
现在我有了:
$this->log->error('error on command', array(
'command_tapped_by_user' => '????',
'command' => $this->getName(),
'arguments' => $input->getArguments(),
'options' => $input->getOptions(),
'exception' => $e->getMessage()
));
谢谢
答案 0 :(得分:2)
传递给PHP脚本的所有参数都在$argv
数组中提供,其中第一个元素是脚本名称。它不是一个超级全球的"数组和Symfony命令(或任何其他函数或方法),它可以作为$GLOBALS
的元素或通过global
关键字。原始命令由空白字符分隔。要恢复它,你应该加入它们:
echo join(' ', $GLOBALS['argv']);
此外,如果您不担心操作系统依赖关系(如果您是不符合规范的人),则可以使用系统工具。例如,在Linux环境中,当前命令行存储在/proc/$PID/cmdline
:
$pid = getmypid();
$cmd = file_get_contents("/proc/$pid/cmdline");
// Arguments are splitted by NULL bytes that we replace by space character:
echo str_replace("\0", " ", $cmd);