2

私はここでは初心者ですが、私の問題をできる限り説明しようと思います。

基本的に、クライアントのサイトで誰かが注文を完了するたびに、スクリーンショット ファイルの自動 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 のさまざまなアカウントもテストしましたが、同じ結果が得られました。タイムアウトをより長い時間に設定できるかどうかも試しましたが、効果はありませんでした。どんな助けでも大歓迎です。どうもありがとうございました!:)

4

1 に答える 1

2

これは fsockopen の問題です。

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

おそらく、データをアップロードしようとしているマシンでファイアウォール/iptables を更新する必要があります。

于 2014-11-01T14:53:06.063 に答える