Php 返回空白数组的Exec

Php 返回空白数组的Exec,php,exec,Php,Exec,在搜索过程中,我看到了很多关于这方面的问题,但没有一个答案是有效的,只有其他尝试的建议 $server = "IPADDRESS"; $username = "USER"; $port = "22"; $ftpuser = "FTPUSER" $ftppass = "FTPPASS" $command = "/usr/local/psa/bin/subscription --create " . $domain . " -owner admin -service-plan 'Default D

在搜索过程中,我看到了很多关于这方面的问题,但没有一个答案是有效的,只有其他尝试的建议

$server = "IPADDRESS";
$username = "USER";
$port = "22";
$ftpuser = "FTPUSER"
$ftppass = "FTPPASS"

$command = "/usr/local/psa/bin/subscription --create " . $domain . " -owner admin -service-plan 'Default Domain' -ip " . $server . " -login " . $ftpuser . " -passwd '" . $ftppass . "'";
$cmd_string = "ssh -p ".$port." ".$username."@".$server." ".$command;
exec($cmd_string, $output);
echo $command;
echo $output;
将正常运行时间用作命令可以很好地工作,获取$command的精确输出并手动粘贴它也可以很好地工作,通常的输出是
成功:创建域已完成
——但是在运行此命令时,它只输出“Array”,没有任何内容。我遗漏了什么吗?

很清楚:

如果存在输出参数,则指定的数组将由命令的每一行输出填充。此数组中不包括尾随空白,例如\n。注意,如果数组已经包含一些元素,exec()将附加到数组的末尾。如果不希望函数附加元素,请在将数组传递给exec()之前对数组调用unset()

它返回一个数组,数组中填充了exec调用的每一行

因此,在您的情况下,您应该使用:

echo $output[0]; // The first and only line

输出[0]不输出任何内容,没有成功,没有错误,只有空白-我以前使用过此结构来检索输出数组,没有指定行的标准输出返回数组的每一行。@Dabien然后尝试
var\u dump($output)
并查看其结构。它是一个数组,正如你告诉它输出“array”,可能在弄乱它之前有一个额外的换行符,所以它的
$output[1]
var_dump($output)发出“array(0){}”-我知道它是一个数组,我只是说,回送$output无论如何都会显示每一行。@Dabien好吧,不,
echo
在数组上不会显示内容,从来没有
print\u r
var\u dump
会,这就是我要求你这么做的原因。不管怎样,你说运行
$command
直接起作用,那么
$cmd\u string
呢?你是对的,我在数组打印上犯了错误-我对PHP还是新手,我在想一些完全不同的事情。如果我回显$cmd_字符串(ssh-p22root@IPADDRESS/usr/local/psa/bin/subscription--create DOMAIN-owner admin-service plan'Default DOMAIN'-ip IPADDRESS-login FTPUSER-passwd'FTPPASS'),我可以将它直接粘贴到服务器控制台,同时以web用户身份登录(本例中为www数据),它将工作得很好。我还可以在php中将$command更改为“uptime”,echo输出[0]将完美地回显正常运行时间。