sgrabaum / smb
php wrapper for smbclient 和由 icewind1991/SMB 分支的 libsmbclient-php
1.0.5.1
2015-11-11 15:42 UTC
Requires
- php: >=5.3
- icewind/streams: 0.2.*
- league/flysystem: ~1.0
Requires (Dev)
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-18 18:37:00 UTC
README
该项目由 icewind1991/SMB 分支,以提供连接的本地化。在版本 1.0.4 中仅提供美国。
PHP 的 smbclient
包装器及 libsmbclient-php
- 重用单个
smbclient
实例进行多个请求 - 不会将密码泄露到进程列表中
- 简单的 1 对 1 映射 SMB 命令
- 基于流的 API,以消除对临时文件的需求
- 支持通过
libsmbclient-php
直接使用 libsmbclient
示例
上传文件
<?php use Icewind\SMB\Server; require('vendor/autoload.php'); $fileToUpload = __FILE__; $server = new Server('localhost', 'test', 'test'); $share = $server->getShare('test'); $share->put($fileToUpload, 'example.txt');
下载文件
<?php use Icewind\SMB\Server; require('vendor/autoload.php'); $target = __DIR__ . '/target.txt'; $server = new Server('localhost', 'test', 'test'); $share = $server->getShare('test'); $share->get('example.txt', $target);
列出远程服务器上的共享
<?php use Icewind\SMB\Server; require('vendor/autoload.php'); $server = new Server('localhost', 'test', 'test'); $shares = $server->listShares(); foreach ($shares as $share) { echo $share->getName() . "\n"; }
列出文件夹内容
<?php use Icewind\SMB\Server; require('vendor/autoload.php'); $server = new Server('localhost', 'test', 'test'); $share = $server->getShare('test'); $content = $share->dir('test'); foreach ($content as $info) { echo $name->getName() . "\n"; echo "\tsize :" . $info->getSize() . "\n"; }
使用读取流
<?php use Icewind\SMB\Server; require('vendor/autoload.php'); $server = new Server('localhost', 'test', 'test'); $share = $server->getShare('test'); $fh = $share->read('test.txt'); echo fread($fh, 4086); fclose($fh);
使用写入流
<?php use Icewind\SMB\Server; require('vendor/autoload.php'); $server = new Server('localhost', 'test', 'test'); $share = $server->getShare('test'); $fh = $share->write('test.txt'); fwrite($fh, 'bar'); fclose($fh);
使用本地化
<?php use Icewind\SMB\Server; require('vendor/autoload.php'); $server = new Server('localhost', 'test', 'test'); $oServer->setConnectionEnv( [ 'LC_ALL' => 'de_DE.UTF-8', 'LANG' => 'de_DE.UTF-8' ] ); // de_DE.UTF-8 = german language and files with german characters $share = $server->getShare('test', '?? M d H:i:s Y T'); // Format "?? M d H:i:s Y T" is german language date time result of smbclient, need for parser to get timestamp $fh = $share->write('test.txt'); fwrite($fh, 'bar'); fclose($fh);
使用 libsmbclient-php
<?php use Icewind\SMB\Server; use Icewind\SMB\NativeServer; require('vendor/autoload.php'); $fileToUpload = __FILE__; if (Server::NativeAvailable()) { $server = new NativeServer('localhost', 'test', 'test'); } else { echo 'libsmbclient-php not available, falling back to wrapping smbclient'; $server = new Server('localhost', 'test', 'test'); } $share = $server->getShare('test'); $share->put($fileToUpload, 'example.txt');