ftp_exec():未知SITE命令


ftp_exec(): Unknown SITE command

我需要从php运行一个linux命令。所以我使用了ftp_exec()函数。

 $command='ls -al> /ftp_test/t.log';
 if (ftp_exec($ftp_conn,$command))
   {
     echo "$command executed successfully.";
   }
   else
   {
   echo "Execution of $command failed.";
   }

但它给了我警告

警告:ftp_exec((:未知SITE命令

我在谷歌上搜索了一下,发现ftp_exec"通过FTP执行并没有得到广泛支持。在你开始编码需要它的东西之前,请检查它是否在你想要连接的服务器上工作。">

有人能给我一个从php运行linux命令的想法吗?

如果您有适当的授权,您可以通过SSH:进行授权

$file_list = shell_exec('ssh user@site "ls -la"');

对于user,您需要为site拥有一个授权的ssh密钥,无论哪个用户运行PHP,都必须可以访问该用户。这通常可以归结为对两者都使用用户wwwrun

或者您可以使用sudo来增加安全性,方法是将命令放入自己的脚本中,然后执行:

$file_list = shell_exec('sudo /usr/local/bin/ssh-ls-site');

现在,用户wwwrun可以运行ssh-ls-site,但不能修改其内容,因此他不能运行任意命令,也不能访问ssh授权密钥。

ssh-ls-site可以记录请求以及更新本地标记文件,如果文件更新到某个保护时间,则立即退出。这将防止对站点可能的DoS攻击(运行允许的命令,耗尽资源(,并提高性能;例如,如果需要经常运行该命令,可以将结果保存到临时文件中。然后,如果发现该文件存在,并且不太旧,则只需读回其内容,而不需要将其请求到@site,从而有效地在本地缓存该命令。