I have successfully uploaded files over ftp, but I now need to do via SFTP. I can successfully connect to the remote server, create a file and write to it, but I am unable to upload an existing file from my local server to the remote server. Is ftp_put not firing with an sftp connection?
My code used to write a file :
//Send file via sftp to server $strServer = "*****"; $strServerPort = "****"; $strServerUsername = "*****"; $strServerPassword = "*****"; $csv_filename = "Test_File.csv"; //connect to server $resConnection = ssh2_connect($strServer, $strServerPort); if(ssh2_auth_password($resConnection, $strServerUsername, $strServerPassword)){ //Initialize SFTP subsystem echo "connected"; $resSFTP = ssh2_sftp($resConnection); $resFile = fopen("ssh2.sftp://{$resSFTP}/".$csv_filename, 'w'); fwrite($resFile, "Testing"); fclose($resFile); }else{ echo "Unable to authenticate on server"; }
Has anyone had any success in grabbing a local file and uploading via a method such as above with sftp? An example would be greatly appreciated.
Thanks
We can also use the SFTP in order to upload local file to the remote SFTP server. The put command is used to upload local file or folder to the remote server by poviding the local file or folder name. In order to upload folders to the remote SFTP server the recursive option should be provided to the put command.
With the method above (involving sftp) you can use stream_copy_to_stream:
$resFile = fopen("ssh2.sftp://{$resSFTP}/".$csv_filename, 'w'); $srcFile = fopen("/home/myusername/".$csv_filename, 'r'); $writtenBytes = stream_copy_to_stream($srcFile, $resFile); fclose($resFile); fclose($srcFile);
You can also try using ssh2_scp_send
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With