我需要从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():未知站点命令
我在googled上搜索了ftp_exec,并发现“通过FTP执行并不是很受支持。在开始编写需要此功能的代码之前,请检查它是否工作在您想要连接的服务器上。”
有人能告诉我从php运行linux命令的想法吗?
发布于 2015-09-15 06:08:52
如果您有适当的授权,您可以通过SSH这样做:
$file_list = shell_exec('ssh user@site "ls -la"');您将需要user拥有site的授权ssh密钥,并且用户必须可以从运行site的任何用户中访问。这通常归结为两者都使用了用户wwwrun。
或者您可以使用sudo来增加安全性,方法是将命令放入自己的脚本中,然后执行以下操作:
$file_list = shell_exec('sudo /usr/local/bin/ssh-ls-site');现在可以允许用户wwwrun运行ssh-ls-site,但不能修改其内容,因此他不能运行任意命令,也不能访问ssh授权键。
ssh-ls-site可以记录请求以及更新本地标记文件,如果该文件比特定的保护时间新,则立即退出。这将防止针对站点的可能的DoS攻击(运行大量允许的命令、耗尽资源),并提高性能;例如,如果需要经常运行命令,则可以将结果保存到临时文件中。然后,如果发现该文件存在,并且不太老,您只需读取它的内容,而不是向@site请求它,从而有效地在本地缓存命令。
https://stackoverflow.com/questions/32578654
复制相似问题