php连接ftp

PHP连接ftp,发现一个很好用的类库phpseclib。英文原文

Connecting to SFTP with PHP

If you need to connect to SFTP using PHP then the simplest approach I’ve found is to use phpseclib, a library of functions for secure communications.

The library is a Composer package so you will need to have Composer installed, then just require the package as usual:-

$ composer require phpseclib/phpseclib

The library provides what it refers to as a “pure-PHP implementation of SFTP” and supports the most widely used versions of SFTP.

To initiate a connection a new object of SFTP is created with the address of the remote server passed to the constructor. To authenticate our SFTP connection we can pass the login credentials using SFTP::login():-

use phpseclib\Net\SFTP;

$sftp = new SFTP(‘www.example.com‘);

if (!$sftp->login(‘username‘, ‘password‘)) {
	throw new Exception(‘Login failed‘);
}

If we’ve got a private key we need to use the RSA class so that we can pass the key in place of the password to the SFTP::login() method:-

use phpseclib\Crypt\RSA;
use phpseclib\Net\SFTP;

$sftp = new SFTP(‘www.example.com‘);

$Key = new RSA();
// If the private key has a passphrase we set that first
$Key->setPassword(‘passphrase‘);
// Next load the private key using file_gets_contents to retrieve the key
$Key->loadKey(file_get_contents(‘path_to_private_key‘));

if (!$sftp->login(‘username‘, $Key)) {
	throw new Exception(‘Login failed‘);
}

The SFTP class provides methods for SFTP similar to those provided by PHP’s FTPextension. For example, to get a list of files for the current directory we usenlist() (equivalent of ftp_nlist):-

$files = $sftp->nlist();

To change directory use chdir():-

$sftp->chdir(‘directory_name‘);

To get a file from the remote server use get():-

$sftp->get(‘remote_file‘, ‘local_file‘);

This saves the remote_file to local_file. If the second parameter is left empty then the method returns the contents of the remote file if successful (otherwise it returns false).

To upload a file to the remote server use put():-

$sftp->put(‘remote_file‘, ‘contents for remote file‘);

There are many other methods available and can be found in the SFTP class. The class is well documented with thorough comments. The above methods should get you started though.

Hopefully you can see that phpseclib provides a simple way of working with aSFTP connection.

时间: 2025-01-07 00:56:11

php连接ftp的相关文章

Python学习 第9天 连接FTP和数据库

公司项目刚好有个小需求,要遍历FTP文件夹下的图片,并写进数据库,非常适合练手 从网上找了一段代码,改造了一下 中文是个大坑 #encoding=utf-8 from ftplib import FTP import os, sys, string, datetime, time, socket, pymssql reload(sys) sys.setdefaultencoding('utf8') class MYFTP: def __init__(self, hostaddr, usernam

如何在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作

Phpstorm除了能直接打开localhost文件之外,还可以连接FTP,除了完成正常的数据传递任务之外,还可以进行本地文件与服务端文件的异同比较,同一文件自动匹配目录上传,下载,这些功能是平常IDE,FTP软件中少见的,而且是很耗工作时间的一个操作.换句话说,在Webstorm/Phpstorm中操作ftp能找到原来版本控制的感觉.唯一的缺点是:上传,下载的打开链接要稍费时间,适合的场景在于单文件的编辑,这个如果网速够快一般可以忽略,而且就个人体验,虽然链接的速度稍慢,传输的速度并不慢. 1

Mac 使用smb协议连接FTP服务器

在Mac中,可以通过smb协议作为客户端连接到服务器,例如一个FTP服务器,然后获取上面的共享文件. 方法: 1.在Finder菜单中点击前往 -- 连接服务器. 也可以Command + K,也可以右击Finder然后点击连接服务器. 2.输入服务器地址并连接: 3.接下来以客户或注册用户身份登录,后面的就不多说了. Mac 使用smb协议连接FTP服务器,布布扣,bubuko.com

PHPSTORM_设置连接FTP,并快速进行文件比较,上传下载,同步等操作

Phpstorm除了能直接打开localhost文件之外,还可以连接FTP,除了完成正常的数据传递任务之外,还可以进行本地文件与服务端文件的异同比较,同一文件自动匹配目录上传,下载,这些功能是平常IDE,FTP软件中少见的,而且是很耗工作时间的一个操作.换句话说,在Webstorm/Phpstorm中操作ftp能找到原来版本控制的感觉.唯一的缺点是:上传,下载的打开链接要稍费时间,适合的场景在于单文件的编辑,这个如果网速够快一般可以忽略,而且就个人体验,虽然链接的速度稍慢,传输的速度并不慢. 1

java连接FTP、删除、下载文件的方法

本文共例举了二个连接FTP的方法,可以下载删除FTP上的文件,代码有点凌乱 JAVA自带的方法 import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.Input

linux下常用FTP命令 1. 连接ftp服务器

1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可. 2. 下载文件 下载文件通常用get和mget这两条命令.a) get 格式:get [remote-file] [local-file]将文件从远端主机中传送至本地主机中.如要获取远程服务器上/usr/your/1.htm,则 ftp> get /usr/your/1.htm 

FileZilla连接ftp服务器失败,提示"AUTH TLS"解决方法

FileZilla连接ftp服务器失败,提示"AUTH TLS"解决方法 前几天还是能正常连接ftp服务器的,突然一下连接失败,提示"AUTH TLS",用浏览器试了一下"ftp:ip地址",输入用户名.密码后可以正常访问.所以应该是FileZilla软件连接配置有点问题,百度了一下就解决了.记录下解决过程,方便自己查看. 1.连接的提示 连接时并没有提示用户名.密码错误,说明是正确的:查了下,原因是服务器不支持FTP over TLS的连接方式

System.Net.FtpClient库连接ftp服务器

如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://netftp.codeplex.com 然后下载该资源,我们就可以使用它的函数了.这里介绍一下如何使用System.Net.FtpClient链接ftp服务器并下载服务器中的文件. 千万别忘了添加引用——导入System.Net.FtpClient.dll. 还有就是 using System.Net.F

Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作

Phpstorm除了能直接打开localhost文件之外,还可以连接FTP,除了完成正常的数据传递任务之外,还可以进行本地文件与服务端文件的异同比较,同一文件自动匹配目录上传,下载,这些功能是平常IDE,FTP软件中少见的,而且是很耗工作时间的一个操作.换句话说,在Webstorm/Phpstorm中操作ftp能找到原来版本控制的感觉.唯一的缺点是:上传,下载的打开链接要稍费时间,适合的场景在于单文件的编辑,这个如果网速够快一般可以忽略,而且就个人体验,虽然链接的速度稍慢,传输的速度并不慢. 1