是否可以在远程计算机(不是localhost)上执行Shell命令?例如

$output = shell_exec("unzip filename.zip");

您可以假设您在远程计算机上具有用户帐户的登录凭据,以及远程root用户名,密码和CPANEL远程访问键。

有帮助吗?

解决方案

如果您的意思是“远程计算机”,如“不是客户端计算机”,则答案是不合格的。通过PHP运行的命令 exec 功能将在Web服务器上执行。

如果您的意思是“不是Web服务器”,那么答案是一个稍微削弱的是。你只能 直接地 在运行PHP的服务器上执行命令。但是,这些命令然后可以通过SSH等机制在远程计算机上运行其他命令。因此,例如,如果您的Web服务器对远程计算机具有无密码的SSH访问(一个非常糟糕的主意),则可以使用: exec('ssh otherhost someremotecommand');. 。哪种解决方案适合您,取决于您所需的用法。

其他提示

我知道这个问题很古老,但对于这个问题的观众来说。

您也可以使用SSH2_EXEC。 http://php.net/manual/en/function.ssh2-exec.php

<?php

$ip = 'ip_address'; 
$user = 'username'; 
$pass = 'password'; 

$connection = ssh2_connect($ip); 
ssh2_auth_password($connection,$user,$pass); 
$shell = ssh2_shell($connection,"bash");

?>

是的,并且无需更改任何代码即可。但是,如果您的服务器将PHP置于安全模式(经常共享托管计划),则可能无法执行此操作。

提示:您可以使用此速记来获取命令的输出:

$output = `command here`
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top