php wrapper for smbclient 和由 icewind1991/SMB 分支的 libsmbclient-php

1.0.5.1 2015-11-11 15:42 UTC

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

安装 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');