gpt4 book ai didi

php - SCP 命令行和 PHP exec() 不做同样的事情

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:53 28 4
gpt4 key购买 nike

当我在命令行上运行它时:

scp -i private.ppk -P 22 foo.txt someuser@domain.com:/home/someuser/foo.txt

一切正常。 foo.txt 毫无问题地传输到远程服务器。我需要从 PHP 运行完全相同的命令。所以,我有以下代码:

$command = 'scp -i private.ppk -P 22 foo.txt someuser@domain.com:/home/someuser/foo.txt';
exec($command);

这行不通。 PHP 文件在与 private.ppk 相同的目录中执行。当我var_dump exec 的结果时,我得到一个NULL

我想知道这是否是权限问题。我知道我在命令行上运行的是谁,但我不确定是谁在运行脚本。这可能是问题所在吗?还是完全不同的东西?

最佳答案

我认为这是一个权限问题。 SSH 客户端通常拒绝连接,除非权限已设置为第三方(例如用户“nobody”)无法读取 key 。

也就是说,您使用的是 *.ppk 有点奇怪 - 这是 PuTTY key 使用的扩展 - OpenSSH 不支持。

也就是说,我的建议是使用 phpseclib's SCP client .此时,您可以将键作为字符串保存在 PHP 文件本身中,而不必将它们保存在文件系统中。更多信息:

https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Net/SCP.php

关于php - SCP 命令行和 PHP exec() 不做同样的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159943/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com