dbeurive / ftp
此包实现了一个具有便捷功能的简单FTP客户端
3.0.4
2019-10-29 19:03 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: >=6.5.0
This package is not auto-updated.
Last update: 2024-09-25 17:59:13 UTC
README
此仓库包含一个针对FTP(相当不错)的PHP功能的包装器。
概述
$options = array(Ftp::OPTION_PORT => $port, Ftp::OPTION_TIMEOUT => 60);
$ftp = new Ftp($host, $options);
$ftp->connect();
$ftp->login($user, $password);
$ftp->get($local_path, $remote_path);
$ftp->put($local_path, $remote_path);
$ftp->delete($remote_path);
$ftp->mkdir($remote_path);
$entries = $ftp->ls($remote_path, true);
$status = $ftp->deleteIfExists($remote_path);
$status = $ftp->fileExists($remote_path);
$status = $ftp->directoryExists($remote_path);
$entry = $ftp->entryExists($remote_path);
$status = $ftp->mkdirRecursiveIfNotExist($remote_path);
$ftp->setEntryManagerClassName($your_own_class_name);
安装
从命令行
composer require dbeurive/ftp
或者,在composer.json文件中
"require": {
"dbeurive/ftp": "*"
}
文档
代码有大量文档,并为每个方法提供了一个简单的示例。
- connect():打开与服务器的连接。
- disconnect():关闭与服务器的连接。
- login($in_user_name, $in_password):向服务器进行认证。
- isLogged():测试客户端是否已向服务器进行认证。
- ls($in_opt_dir='.', $in_opt_throw_exception_on_error=false):列出由给定路径指定的目录的内容。此函数解析服务器返回的输出。
- put($in_local_file_path, $in_remote_file_path, $in_opt_mode=FTP_BINARY):将文件从本地主机复制到远程服务器。
- get($in_local_file_path, $in_remote_file_path, $in_opt_mode=FTP_BINARY):从远程服务器获取文件到本地主机。
- mkdir($in_directory_path):在远程主机上创建目录。
- mkdirRecursiveIfNotExist($in_directory_path):递归创建由给定路径指定的目录,如果该目录不存在。
- rmdir($in_directory_path):删除由给定路径指定的目录。
- delete($in_file_path):在远程服务器上删除由给定路径指定的文件。
- deleteIfExists($in_directory_path):测试文件是否存在,如果存在,则删除。
- entryExists($in_entry_path):测试由给定路径指定的条目(目录、文件或链接)是否存在。
- directoryExists($in_directory_path):测试由给定路径指定的目录是否存在。
- fileExists($in_file_path):测试由给定路径指定的文件是否存在。
- setEntryManager($in_class_name):设置表示远程主机上的条目(文件、目录或链接)并负责解析FTP命令LIST输出的类的名称。
最后的方法(setEntryManager)需要更详细的描述。
FTP命令LIST返回代表远程目录中条目(目录、文件或链接)列表的文本。例如
-rw-r--r-- 1 0 0 1 Jan 15 14:08 file0.txt
-rw-r--r-- 1 0 0 2 Jan 15 14:08 file1.txt
-rw-r--r-- 1 0 0 3 Jan 15 14:08 file2.txt
-rw-r--r-- 1 0 0 4 Jan 15 14:08 file3.txt
drwxr-xr-x 2 0 0 4096 Jan 15 14:08 r1
drwxr-xr-x 2 0 0 4096 Jan 15 14:08 r2
drwxr-xr-x 2 0 0 4096 Jan 15 14:08 r3
drwxr-xr-x 2 0 0 4096 Jan 15 14:08 r4
请注意
- FTP命令LIST返回的文本组织可能因操作系统或FTP服务器而异。
- 根据操作系统或FTP服务器,与条目关联的属性可能不相同。
然而,必须解析此文本以提取条目列表及其属性(权限、所有者、组...)。
无法处理所有可能的文本组织(针对所有操作系统和可能的所有FTP服务器)以及所有可能的属性。
因此,FTP包装器允许用户声明自己的类来处理文本解析和属性管理。默认使用的类是EntryManagerUnix。
然而,您可以编写并声明自己的类来处理其他用例。您的类必须扩展抽象类AbstractEntryManager。
您必须在发出任何处理条目的命令(如LIST...)之前设置您的条目管理器。您应该在实例化Ftp对象后立即设置它。
请参阅此示例。
单元测试
为了运行单元测试,您需要以下元素
- 运行FTP服务器和SSH服务器的主机。
- 访问FTP服务器和SSH服务器。
SSH用于在运行FTP服务器的主机上执行shell命令。这些命令将为测试准备环境。
准备
编辑tests/setenv.sh
此脚本定义了单元测试期间使用的参数。这些参数包括
以下参数用于(单元)测试有效测试案例
- FTP_REMOTE_HOST_OK:FTP服务器的主机名或IP地址。
- FTP_USER_OK:用于认证FTP服务器的用户名。
- FTP_PASSWORD_OK:用于认证FTP服务器的密码。
- FTP_PORT_OK:FTP服务器使用的TCP端口(例如:21)。
用于(单元)测试无效测试案例的参数
- FTP_REMOTE_HOST_KO:不监听FTP连接请求的主机的名称或IP地址。
- FTP_USER_KO:无效的用户名。
- FTP_PASSWORD_KO:无效的密码。
- FTP_PORT_KO:无效的TCP端口号。
- ROOT_ON_REMOTE:远程主机(运行FTP服务器)上的FTP路径,用于通过FTP获取和放置文件。
- BAD_DIR_ON_REMOTE:远程主机(运行FTP服务器)上的无效FTP路径。
用于在运行FTP服务器的主机上设置环境的参数
- SSH_ARG:用于通过SSH连接到运行FTP服务器的主机的
ssh命令的命令行参数。
示例
export FTP_REMOTE_HOST_OK='10.11.12.13'
export FTP_USER_OK='good_ftp_user_name'
export FTP_PASSWORD_OK='goot_ftp_password'
export FTP_PORT_OK=21
export FTP_REMOTE_HOST_KO='yahoo.com'
export FTP_USER_KO='invalid_user_name'
export FTP_PASSWORD_KO='invalid password'
export FTP_PORT_KO=10021
export ROOT_ON_REMOTE='/files';
export BAD_DIR_ON_REMOTE='/tmp';
export SSH_ARG='root@127.0.0.1'
编辑tests/clear_on_remote.sh
脚本tests/clear_on_remote.sh将在运行FTP服务器的主机上执行。它将为单元测试准备环境。
设置正确的FTP_REMOTE_DIR值。
FTP_REMOTE_DIR:服务器主机上的绝对系统路径,用于通过FTP获取或放置文件。
示例
FTP_REMOTE_DIR=/home/ftpuser/ftp/files
运行单元测试
运行以下命令
. ./tests/setenv.sh
./vendor/bin/phpunit