如何解决php 命令通过静态运行它来工作,但在
所以我的问题是这个。当我尝试运行以下命令时,没有任何效果,我没有收到错误消息,也没有输出,并且文件不会传输到其他设备(此处使用本地主机地址作为占位符)。
shell_exec('sshpass -p "'.$password.'" scp -o StrictHostKeyChecking=no /file.txt user@127.0.0.1:/home/user/ 2>&1');
但是如果我在命令中以纯文本形式传递密码而不是使用变量(如下所示),它会正常工作???
shell_exec('sshpass -p "Password" scp -o StrictHostKeyChecking=no /file.txt user@127.0.0.1:/home/user/ 2>&1');
我已经尝试过的:
我现在尝试了一些东西,但不知何故它们都不起作用,我不明白为什么,因为最后这些是 1:1 相同的命令......希望我在这里变得更聪明
(该网站在 Linux apache 服务器上运行,我尝试使用 PHP v. 7.3.19 运行它)
解决方法
所以看看这段代码的输出,它真的会帮助你调试
<?php
$password = "Password";
$commandOne = 'sshpass -p "'.$password.'" scp -o StrictHostKeyChecking=no /file.txt user@127.0.0.1:/home/user/ 2>&1';
$commandTwo = 'sshpass -p "Password" scp -o StrictHostKeyChecking=no /file.txt user@127.0.0.1:/home/user/ 2>&1';
echo $commandOne . PHP_EOL;
echo $commandTwo . PHP_EOL;
输出
sshpass -p "Password" scp -o StrictHostKeyChecking=no /file.txt user@127.0.0.1:/home/user/ 2>&1
sshpass -p "Password" scp -o StrictHostKeyChecking=no /file.txt user@127.0.0.1:/home/user/ 2>&1
当我在密码变量中使用“密码”时,它们完全相同,所以现在只需尝试放置您的真实密码并比较它们,它就会告诉您问题
如果你得到相同的结果,就在你的代码中试试这个
<?php
$password = "Password";
$command = 'sshpass -p "'.$password.'" scp -o StrictHostKeyChecking=no /file.txt user@127.0.0.1:/home/user/ 2>&1';
shell_exec($command);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。