以下工作正常
$stream = fopen($connection_string . "/var/tmp/test.test", 'r');
但是
$stream = fopen($connection_string . "/var/tmp/test.#test", 'r');
失败并显示错误消息: 警告:fopen():无法打开ssh2.sftp://资源ID#108 / var / tmp / test。#test在远程主机上...
test.test和test #test工作正常,只有测试组合。#test失败。
ssh2_scp_recv()处理测试。#test就好了。
CentOS 5.8版(最终版) PHP 5.2.17
这是一个php bug吗?或者需要一些特殊字符转义?
答案 0 :(得分:2)
了解它与phpseclib的效果会很有趣。例如
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
// outputs the contents of filename.remote to the screen
echo $sftp->get('filename.remote');
// copies filename.remote to filename.local from the SFTP server
$sftp->get('filename.remote', 'filename.local');
?>
src:http://phpseclib.sourceforge.net/sftp/examples.html#get
如果phpseclib不起作用,您可以使用phpseclib启用日志记录,并查看phpseclib日志所说的内容。例如。在您添加define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);
之后执行Net/SFTP.php
,然后在尝试下载文件后执行$sftp->getLog()
。