Apt通过PHP shell获取安装\u exec()

Apt通过PHP shell获取安装\u exec(),php,shell-exec,apt,apt-get,Php,Shell Exec,Apt,Apt Get,我试图在PHP上使用shell_exec()函数来安装一个带有apt的包。为此,我想我还需要-y操作符来假设所有问题都是肯定的。因此,我有: $output = shell_exec("apt-get -y install <package-id>"); echo $output; $output=shell_exec(“apt get-y install”); echo$输出; 但是,通过执行此操作,安装仅能够输出到“此操作后,将使用0B的额外磁盘空间”点,并且不会返回错误。然

我试图在PHP上使用shell_exec()函数来安装一个带有apt的包。为此,我想我还需要-y操作符来假设所有问题都是肯定的。因此,我有:

$output = shell_exec("apt-get -y install <package-id>");
echo $output;
$output=shell_exec(“apt get-y install”);
echo$输出;
但是,通过执行此操作,安装仅能够输出到“此操作后,将使用0B的额外磁盘空间”点,并且不会返回错误。然而,当从终端运行此功能时,它运行得非常完美。此外,shell_exec正在从根目录运行。这是我的PHP服务器配置的问题,还是其他问题?谢谢


编辑:我忘了提到PHP是通过lighttpd运行的,这可能是导致问题的原因。我还发现,使用apt get install实际上下载了.deb,但没有给出错误就安装失败了。由此,我得出结论,这与权限有关,但我还没有找到解决方法。谢谢。

你会喜欢这条路和家吗?啊,如果您在CLI上运行此命令,可能不会-但是请检查它们!我认为您应该使用
proc\u open()
而不是
shell\u exec()
,因为您需要与所有管道进行交互。还可以尝试在命令行中添加--force yes并重试。即使使用-y,这也不适用于debconf问题,在非交互式安装软件包之前,需要回答这些问题。听起来像是权限问题。就像它没有权限在下载时写入必要的目录一样。我不太熟悉,但是您能将输出通过管道传输到像这样的文件>>logfile.txt吗?这些函数中的一些只会返回输出变量最后发生的事情,而不是返回所有语句?啊,如果您在CLI上运行此命令,可能不会-但是请检查它们!我认为您应该使用
proc\u open()
而不是
shell\u exec()
,因为您需要与所有管道进行交互。还可以尝试在命令行中添加--force yes并重试。即使使用-y,这也不适用于debconf问题,在非交互式安装软件包之前,需要回答这些问题。听起来像是权限问题。就像它没有权限在下载时写入必要的目录一样。我不太熟悉,但是您能将输出通过管道传输到像这样的文件>>logfile.txt吗?其中一些函数将只返回输出变量发生的最后一件事,而不是返回所有语句。