我无法将文件从我的 laravel 项目复制到另一台服务器。这就是我正在做的。
$connection = ssh2_connect($this->ftpHostname, $this->ftpPort);
if (!$connection) {
throw new \Exception("Couldn't connect to {$this->ftpHostname}:{$this->ftpPort}");
}
$loginResult = ssh2_auth_password($connection, 'usrname', 'pswrd');
if (!$loginResult) {
throw new \Exception("Username or Password not accepted for {$this->ftpHostname}:{$this->ftpPort}");
}
$sftp = ssh2_sftp($connection);
$fullFilePath = storage_path() .'/'.$this->argument('local-file');
$remoteFilePath = "ssh2.sftp://{$sftp}/{$this->argument('remote-folder')}/SomeFolder/{$this->argument('remote-filename')}.txt";
$copyResult = copy($fullFilePath, $remoteFilePath);
但是它给了我这个错误
[ErrorException]
copy(): Unable to open ssh2.sftp://Resource id #621/My Folders/Upload only/sample.txt on remote host
我真的是 ssh 新手,我该如何解决这个问题?
最佳答案
在 ssh2.sftp://fopen 包装器中使用它之前,先将 $sftp 转换为 int。
$remoteFilePath = "ssh2.sftp://" . (int)$sftp . "/{$this->argument('remote-folder')}/SomeFolder/{$this->argument('remote-filename')}.txt";
来自 ssh2_sftp
The example code above fails unless you cast the $stftp to (int) or use intval()
$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r'); // Fails
$stream = fopen("ssh2.sftp://" . (int)$sftp . "/path/to/file", 'r'); // joy
自 copy()将使用 fopen 包装器来解释您的 ssh2.sftp://uri,这应该会有所帮助。
关于php - SSH2 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192370/