Я новичок здесь, но я постараюсь описать мою проблему как можно лучше.
По сути, я пытался запустить автоматическую загрузку 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, и у меня тот же результат. Я также пытался установить таймауты на большее время, но безрезультатно. Любая помощь будет оценена. Большое спасибо! 🙂
Это проблема с fsockopen:
http://support.hostgator.com/articles/how-to-enable-fsockopen
Возможно, необходимо обновить брандмауэр / iptables на машине, на которую вы пытаетесь загрузить данные.
Других решений пока нет …