PHP classes for working with files and the file system

0.2.0 2015-04-02 17:49 UTC


Build Status Coverage Status Latest Stable Version Dependency Status

PHP classes for working with files and the file system


  • Safely install files on network mounted drives
  • Atomic file installs; 100% uptime on production systems
  • Atomic symlink modifications; 100% uptime on production systems


Load php-filesystem into your project by adding the following lines to your composer.json

    "require": {
        "vube/php-filesystem": ">=0.1"

Example Usage

Install a directory

// Explicitly create a directory.
// ALL parent dirs we create will share mode 0775 as modified by your umask

$installer = new Vube\FileSystem\Installer();
$installer->installDir('/path/to/some/dir', 0775);

Install files safely and atomically

// Install files into /existing-dir
// When installing into subdirs, we create all dirs needed,
// the mode is set by your umask.
// File installs are network-safe, providing 100% uptime
// on production systems.

$installer = new Vube\FileSystem\Installer();

$installer->installFile('file1', '/existing-dir/file1');
$installer->installFile('file2', '/existing-dir/new-dirs-we-create/with/subdirs/file2');

Create/overwrite symlinks atomically

// Create or overwrite /path/to/symlink
// If it already exists, it is atomically updated.

$installer = new Vube\FileSystem\Installer();
$installer->symlink('/path/to/actual', '/path/to/symlink');

Easily diff files

// Compare file1 and file2; are they different?

$differ = new Vube\FileSystem\FileDiffer();

if($differ->isDiff('file1', 'file2'))
    echo "These files are different.\n";

Easily zip files

// Gzip source.txt and save the result in destination.gz

$zipper = new Vube\FileSystem\Gzip();
$zipper->zip('source.txt', 'destination.gz');


  • PHP 5.3.2+
  • Composer