我正在使用phpseclib通过SFTP将文件传输到服务器。在我的本地计算机中,文件可以完美地传输到服务器,但在 Heroku 上它根本不起作用,每次登录都会失败。我不确定为什么会发生这种情况。
这是一段代码。
$sftp = new phpseclibNetSFTP(getenv('INSTRUM_SERVER'),22222);
if (!$sftp->login(getenv('INSTRUM_USERNAME'), getenv('INSTRUM_PASSWORD'))) {
var_dump($sftp->getSFTPErrors());
exit('Login Failed');
}
"var_dump"返回一个空数组,所以我不确定登录失败的原因。
我正在使用作曲家从供应商处加载phpseclib。
我像这样使用 phpseclib,它工作正常:
private $sftp = NULL;
private function create_sftp_object( $host, $port = 22, $timeout = 10 )
{
$path = APPPATH . 'libraries/phpseclib';
set_include_path( get_include_path() . PATH_SEPARATOR . $path );
include_once( APPPATH . 'Net/SFTP.php');
return new Net_SFTP( $host, $port, $timeout );
}
public function index()
{
$this->sftp = create_sftp_object(
getenv('INSTRUM_SERVER'),
22222,
6
);
if( $this->sftp->login( getenv('INSTRUM_USERNAME'), getenv('INSTRUM_PASSWORD') ){
echo 'Login successful';
}else{
echo 'Login not successful';
}
}
它与您的代码略有不同。如您所见,我的库目录中有phpseclib。尝试一下,看看它是否适合您。