Download the PHP package icewind/smb without Composer
On this page you can find all versions of the php package icewind/smb. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package smb
Short Description php wrapper for smbclient and libsmbclient-php
License MIT
Informations about the package smb
SMB
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
Examples
Connect to a share
The server factory will automatically pick between the smbclient
and libsmbclient-php
based backend depending on what is available.
Using anonymous authentication
Using kerberos authentication
There are two ways of using kerberos to authenticate against the smb server:
- Using a ticket from the php server
- Re-using a ticket send by the client
Using a server ticket
Using a server ticket allows the web server to authenticate against the smb server using an existing machine account.
The ticket needs to be available in the environment of the php process.
Re-using a client ticket
By re-using a client ticket you can create a single sign-on setup where the user authenticates against the web service using kerberos. And the web server can forward that ticket to the smb server, allowing it to act on the behalf of the user without requiring the user to enter his password.
The setup for such a system is fairly involved and requires roughly the following this
- The web server is authenticated against kerberos with a machine account
- Delegation is enabled for the web server's machine account
- The web server is setup to perform kerberos authentication and save the ticket in it's environment
- Php has the krb5 extension installed
- The client authenticates using a ticket with forwarding enabled
Upload a file
Download a file
List shares on the remote server
List the content of a folder
Using read streams
Using write streams
Note: write() will truncate your file to 0bytes. You may open a writeable stream with append() which will point the cursor to the end of the file or create it if it does not exist yet. (append() is only compatible with libsmbclient-php)
Using notify
Changing network timeouts
Setting protocol version
Note, setting the protocol version is not supported with php-smbclient version 1.0.1 or lower.
Customizing system integration
The smbclient
backend needs to get various information about the system it's running on to function
such as the paths of various binaries or the system timezone.
While the default logic for getting this information should work on most systems, it is possible to customize this behaviour.
In order to customize the integration you provide a custom implementation of ITimezoneProvider
and/or ISystem
and pass them as arguments to the ServerFactory
.
Testing SMB
Use the following steps to check if the library can connect to your SMB share.
- Clone this repository or download the source as zip
- Make sure composer is installed
- Run
composer install
in the root of the repository - Edit
example.php
with the relevant settings for your share. - Run
php example.php
If everything works correctly then the contents of the share should be outputted.