【问题标题】:could not copy file name with space in scp ssh无法在 scp ssh 中复制带有空格的文件名
【发布时间】:2015-07-23 12:17:44
【问题描述】:

我无法使用 ssh2_scp_recv() 函数复制文件名中带有空格的文件。这是实际存储在服务器中的文件名 testfile-03_23_15 11 02 AM.csv。
我的代码在这里

if ($file == "testfile-03_23_15 11 02 AM.csv"){

    if(!ssh2_scp_recv($connection,$remoteDir .$file, $localDir . $file)){
        echo "Could not download: ", $remoteDir, $file, "\n";
    }
}

如果你知道,请帮助我。 谢谢。

【问题讨论】:

  • 作为一种可能的解决方法:在复制之前替换所有空格
  • 这是文件名 testfile-03_23_15 11 02 AM.csv 实际存储在服务器中。我无法更改远程服务器中的文件名。
  • 尽可能使用 SFTP 而不是 SCP。使用起来更容易。

标签: php ssh scp


【解决方案1】:

使用 phpseclib:

<?php
include 'phpseclib/Net/SSH2.php';
include 'phpseclib/Net/SCP.php';

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('bad login');
}
$scp = new Net_SCP($ssh);
$scp->get('file name with spaces');

【讨论】:

  • sparkita 感谢您的回复。所以你告诉我使用 ssh2_scp_recv() 函数不起作用?
【解决方案2】:

试试这个:

 ssh2_scp_recv($connection,"\"".$remote_file_name."\"",$local_path."/".$remote_file_name); 

来源:php.net

它说:试图获取一个名称中包含空格的远程文件? 永远不要忘记在远程文件名中使用引号,但永远不要在本地文件名中使用引号。

【讨论】:

  • 感谢您的回复.. :) 我试过了,但没有用.. 我更新的代码在这里 if ($file == "testfile-03_23_15 11 02 AM.csv"){ $remote = $远程目录。 $文件; if(!ssh2_scp_recv($connection,$remoteDir ."\"".$file."\"", $localDir . $file)){ echo "无法下载:", $remoteDir, $file, "\n" ; } } 任何其他解决方案..
猜你喜欢
  • 2014-05-08
  • 2015-06-05
  • 2016-02-27
  • 2011-01-24
  • 2011-09-10
  • 2011-07-06
  • 2012-04-03
  • 2019-05-31
  • 2013-10-05
相关资源
最近更新 更多