Re: Hoping for a working example of SFTP in PHP
| From: | Scott Lucas | Date: | Mon, 25 Jan 2021 13:26:49 +0000 |
| Subject: | Re: Hoping for a working example of SFTP in PHP | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327417@lists.php.net to get a copy of this message | ||
This is code that we use for the ssh2 library (with password auth). You
will need to replace the auth function for key usage:
https://www.php.net/manual/en/function.ssh2-auth-pubkey-file.php
$error = false;
$connection = ssh2_connect('host.name', 22);
if ($connection) {
if (ssh2_auth_password($connection, 'username', 'password')) {
$sftp = ssh2_sftp($connection);
if ($sftp) {
try {
$sftpStream = fopen('ssh2.sftp://' .
intval($sftp) .
MODULE_SFTP_FOLDER . $filename_remote, 'w');
if (!$sftpStream) {
throw new Exception("Could not open remote file:
$filename_remote");
}
$data_to_send = file_get_contents('manifests/' . $filename);
if ($data_to_send === false) {
throw new Exception("Could not open local file:
manifests/$filename.");
}
if (fwrite($sftpStream, $data_to_send) === false) {
throw new Exception("Could not send data from file:
manifests/$filename.");
}
fclose($sftpStream);
$success = true;
} catch (Exception $e) {
$success = false;
$error = $e->getMessage();
error_log('Exception: ' . $e->getMessage());
if ($sftpStream) fclose($sftpStream);
}
if (!$success) {
$error = true;
}
ssh2_exec($connection, 'exit');
unset($connection);
} else {
$error = true;
}
} else {
$error = true;
}
} else {
$error = true;
}
Hope that helps,
Kind regards,
Scott
First Class Watches
9 Warwick Road
Kenilworth
CV8 1HD
Warwickshire
United Kingdom
On Mon, 25 Jan 2021 at 13:19, Jonesy via php-general <
php-general@lists.php.net> wrote:
> On Mon, 25 Jan 2021 07:51:56 -0500, David Spector wrote:
> > I have a question about uploading a file (text.txt) securely in PHP
> > using the SFTP protocol and a public/private key pair.
>
> rsync: an alternate to sftp:
>
> # Upload to example.com/dir/
> rsync -avzhe ssh \
> /local_dir/dir/TheFile.ext \
> remote_user@example.com:/public_html/dir/
>
> HTH
> Jonesy
> --
> Marvin L Jones | Marvin | W3DHJ.net | linux
> 38.238N 104.547W | @ jonz.net | Jonesy | FreeBSD
> * Killfiling google & XXXXbanter.com: jonz.net/ng.htm
>