【问题标题】:PHP ssh2_scp_send remote file name enclosed in single quotesPHP ssh2_scp_send 远程文件名用单引号括起来
【发布时间】:2012-10-02 17:43:46
【问题描述】:

我正在编写代码以将文件从 Solaris 10 机器 SCP 发送到路由器(再简单不过了)。 代码如下:

<?php
$src = "test.txt";
$trg = "test.txt";

echo "Connecting...\n";
$connection = ssh2_connect('myrouter',22);

echo "Authenticating...\n";
ssh2_auth_password($connection, 'mylogin', 'mypassword');

echo "Sending...\n";
ssh2_scp_send($connection, $src, $trg);
?>

这很好用,但远程文件名搞砸了:

10/11/2012  10:57p                  15 'test.txt'

注意文件名test.txt周围的单引号。

当我使用 Solaris SCP 时,一切正常。这是命令:

solaris10$ scp test.txt mylogin@myrouter:test.txt

远程文件名如下:

10/11/2012  11:10p                  15 test.txt

所以问题似乎仅限于 PHP。

有人遇到过类似的问题吗?我应该从哪里开始寻找?

远程文件系统是 FAT32。

谢谢你, PN。

【问题讨论】:

    标签: php scp


    【解决方案1】:

    我在使用 ssh2_scp_send() 时遇到了同样的问题。但是,我切换到使用 ssh2_sftp() 和 fwrite() 并且问题消失了。请参阅http://www.php.net/manual/en/function.ssh2-sftp.php 页面上的 cmets 中的示例。

    【讨论】:

      【解决方案2】:

      此页面底部的评论http://www.php.net/manual/en/function.ssh2-scp-send.php 指的是您可能遇到的问题;

      您可以将$trg 设置为完整的远程服务器路径吗?

      $trg = "/var/www/test.txt";
      

      $trg = "/test.txt";
      

      【讨论】:

      • 我看到了那个页面。我假设您参考那里的底部评论。这些示例存在语法错误:- Works: ssh2_scp_send($conn, '/var/tmp/file_01.txt', /var/tmp/file_02.txt'); 将导致解析错误,因为远程文件名中缺少 '。而且由于路由器操作系统不是 UNIX(太糟糕了,应该购买 Juniper :) UNIX 绝对路径不起作用。
      • 是的,我也看到了语法错误,但认为它可能仍然相关。祝你好运!
      猜你喜欢
      • 2011-08-27
      • 2010-09-12
      • 2011-02-14
      • 1970-01-01
      • 2013-03-22
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多