错误110连接使用phpseclib尝试通过SFTP上传超时

时间:2014-10-31 09:37:45

标签: php phpseclib ssh2-sftp

我是这里的新手,但我会尽力描述我的问题。

基本上,每当有人在我客户的网站上完成订单时,我就会尝试触发屏幕截图文件的自动SFTP上传。这是为了审查已完成的应用程序。我使用phpseclib作为上传文件的主要方式。不幸的是,每当我将它连接到其他主机服务器时,我都会收到一个超时错误。如果我将其指向自己的服务器,则上传有效。因此,当我们通过sftp将文件上传到自己的服务器时,下面代码中的所有内容都有效。如果是另一个,它会超时。 php在下面。请注意,我将文件上传交换为仅用于测试的txt文件的创建,相同的结果,仍然超时。

ini_set('include_path', '/usr/local/lib/custom_php/phpseclib');
include('Net/SSH2.php');
include('Net/SFTP.php');
define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);



$username   = "user";
$password   = "password";
$host       = "ftp.the3rdpartyserver.com";



$sftp       = new Net_SFTP($host);
$sftp->setTimeout(1000);
$sftp->fsock = 1000;
if (!$sftp->login($username, $password)) {
    exit('login failed again');
};

//$sftp->put($remote_file, $local_file, NET_SFTP_LOCAL_FILE);
//$sftp->put($remote_file, "imagetemp.png", NET_SFTP_LOCAL_FILE);
$sftp->put('filename.txt', "xxx");

print_r($sftp->getSFTPErrors());
echo $sftp->getSFTPLog();

我得到的错误是:

 Error 110. Connection timed out in <b>/usr/local/lib/custom_php/phpseclib/Net/SSH2.php</b> on line <b>966</b><br /> login failed again<br /> <b>Notice</b>: Connection closed prematurely in <b>/usr/local/lib/custom_php/phpseclib/Net/SSH2.php</b> on line <b>3143</b><br /> <br /> <b>Warning</b>: fclose() expects parameter 1 to be resource, boolean given in <b>/usr/local/lib/custom_php/phpseclib/Net/SSH2.php</b> on line <b>3379</b><br />

在我们的测试中,他们告诉我他们已经调整了超时长度,但这仍然是结果。我还测试了sftp的不同帐户,我也有相同的结果。我也试过,如果我可以将超时设置为更长的时间,但没有效果。任何帮助将不胜感激。非常感谢你! :)

1 个答案:

答案 0 :(得分:2)

这是fsockopen的一个问题:

http://support.hostgator.com/articles/how-to-enable-fsockopen

可能需要在您尝试将数据上传到的计算机上更新firewall / iptables。