PHP wrapper for smbclient
and libsmbclient-php
- Reuses a single
smbclient
instance for multiple requests - Doesn't leak the password to the process list
- Simple 1-on-1 mapping of SMB commands
- A stream-based api to remove the need for temporary files
- Support for using libsmbclient directly trough
libsmbclient-php
-
Add as a dependency in your composer file
"require": { "isklv/smb-bundle":"dev-master" }
-
Add to your Kernel
// application/ApplicationKernel.php public function registerBundles() { $bundles = array( new SMBBundle\SMBBundle() ); }
-
(optional) Adjust configurations
# application/config/config.yml smb: host: localhost user: test password: test
<?php
$fileToUpload = __FILE__;
$server = $this->get('smb.server');
$share = $server->getShare('test');
$share->put($fileToUpload, 'example.txt');
<?php
$target = __DIR__ . '/target.txt';
$server = $this->get('smb.server');
$share = $server->getShare('test');
$share->get('example.txt', $target);
<?php
$server = $this->get('smb.server');
$shares = $server->listShares();
foreach ($shares as $share) {
echo $share->getName() . "\n";
}
<?php
$server = $this->get('smb.server');
$share = $server->getShare('test');
$content = $share->dir('test');
foreach ($content as $info) {
echo $name->getName() . "\n";
echo "\tsize :" . $info->getSize() . "\n";
}
<?php
$server = $this->get('smb.server');
$share = $server->getShare('test');
$fh = $share->read('test.txt');
echo fread($fh, 4086);
fclose($fh);
<?php
$server = $this->get('smb.server');
$share = $server->getShare('test');
$fh = $share->write('test.txt');
fwrite($fh, 'bar');
fclose($fh);
<?php
$server = $this->get('smb.server');
$server->setAuthParams('localhost', 'user0', 'user0');
$share = $server->getShare('test');
Install libsmbclient-php
<?php
$fileToUpload = __FILE__;
if (Server::NativeAvailable()) {
$server = new NativeServer('localhost', 'test', 'test');
} else {
echo 'libsmbclient-php not available, falling back to wrapping smbclient';
$server = $server = $this->get('smb.server');;
}
$share = $server->getShare('test');
$share->put($fileToUpload, 'example.txt');