PHPackages                             expresslanding/laravel-filesystem - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. expresslanding/laravel-filesystem

ActiveLaravel-package[File &amp; Storage](/categories/file-storage)

expresslanding/laravel-filesystem
=================================

Filesystem handling for Laravel 9.X

1.0.5(3y ago)01.2k↓100%MITPHPPHP ^8.0.2

Since May 27Pushed 3y ago3 watchersCompare

[ Source](https://github.com/expresslanding/laravel-filesystem)[ Packagist](https://packagist.org/packages/expresslanding/laravel-filesystem)[ RSS](/packages/expresslanding-laravel-filesystem/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (3)Versions (5)Used By (0)

[![](https://avatars2.githubusercontent.com/u/87022758?s=20&v=4)](https://expresslanding.com) Laravel Filesystem
================================================================================================================

[](#-laravel-filesystem)

**Laravel Filesystem** is package is an extension of the Laravel functionality for working with file systems. You can connect an unlimited number of disks, manage their statuses, track the occupied space.

- [Introduction](#introduction)
- [Install](#install)
    - [Configure](#configure)
        - [Setup database](#setup-database)
        - [MySQL setup](#mysql-setup)
        - [Postgres setup](#postgres-setup)
        - [Statuses](#statuses)
        - [Status renaming](#status-renaming)
- [Methods](#Methods)
    - [Get random available drive](#get-random-available-drive)

Introduction
============

[](#introduction)

The package allows you to work with an unlimited number of disks with different types of drivers `local`, `s3`, `SFTP` or `FTP`. You can monitor disk spaces, manage statues and other. More information about supported filesystems and drivers read on [Laravel Filesystem](https://laravel.com/docs/9.x/filesystem)

Install
=======

[](#install)

To install the package via composer execute

```
composer require expresslanding/laravel-filesystem
```

You should publish the migration and the `config/filesystem.php` config file with

```
php artisan vendor:publish --provider="ExpressLanding\Filesystem\FilesystemServiceProvider"
```

Configure
---------

[](#configure)

### Setup database

[](#setup-database)

The package supports two types of databases:

- MySQL
- PostgreSQL

After publishing config and migration, you should setup database for your application.

### MySQL setup

[](#mysql-setup)

A first step for **MySQL** databases set `FILESYSTEM_DATABASE` as `mysql`. You can do it in `.env` config file or `config/filesystem.php` in `database` section. Next step, you should set name for table. Add `FILESYSTEM_TABLE` parameter with table name in to the `.env` config file yours application.

**Example `.env`**

```
FILESYSTEM_DATABASE=mysql
FILESYSTEM_TABLE=filesystems
```

Modify two fields migration. Open package migration and change types for `name` and `config` fields.

**before**

```
...
$table->text('name');                                               // For MySQL use string('name', 200);
$table->jsonb('config');                                            // For MySQL use text('config');
...
```

**after**

```
...
$table->string('name', 200);
$table->text('config');
...
```

### Postgres setup

[](#postgres-setup)

By default, laravel package working with **Postgres** database, and `database` section has `pgsql` as default. But, you can add to `.env` parameter `FILESYSTEM_DATABASE` as `pgsql` just in case. Next step, you should set name for table. Add `FILESYSTEM_TABLE` parameter with table name in to the `.env` config file yours application. You can declare table name with schema, for example `filesystems` table in `content` schema

**Example `.env`**

```
FILESYSTEM_DATABASE=pgsql
FILESYSTEM_TABLE=content.filesystems
```

### Statuses

[](#statuses)

Each of the filesystem have other statuses. You can setup custom statuses in the `config/filesystem.php` in `statuses` section. By default

- `available`: main disk status. If status is available, you can work with disk. If you want to change the name of this status, then you must declare the new name in the `statuses_map` -&gt; `availableDisk` section of the configuration file `config/filesystem.php`
- `deactivated`: This status is the default after disk creation. If you want to change the name of this status, then you must declare the new name in the `statuses_map` -&gt; `newDisk` section of the configuration file `config/filesystem.php`
- `disabled`: You can disable a disk with the status "disabled"
- `full`: When the disk is full, the status is triggered as "full".
- `transferred`: For example, if the data was transferred to another drive. Just in service status.
- `archived`: Set this status if disk need to delete after a few time
- `maintenance`: Mark the disk with this status if you need to perform technical work

### Status renaming

[](#status-renaming)

And once again about two main statuses. Laravel Filesystem package has two main statue `available` and `deactivated`. If you want change name, you should declare about them in `config/filesystem.php` file in `statuses_map` section.

**`available` status renaming example `config/filesyste.php`**

```
    ...
    'statuses' => [
        /*
         * Don't rewrite this status because it's main disk status!
         */
        'newAvailableStatusName',
        ...
    ],
    'statuses_map'   => [
        ...
        /*
         * Status defining a free disk for work
         */
        'availableDisk' => 'newAvailableStatusName',
    ],
],
```

**`deactivated` status renaming example `config/filesyste.php`**

```
    ...
    'statuses' => [
        ...
        /*
         * This status is the default after disk creation.
         */
        'newDeactivatedStatusName',
        ...
    ],
    'statuses_map'   => [
        /*
         * The status assigned to the new disk
         */
        'newDisk'       => 'newDeactivatedStatusName',
        ...
    ],
],
```

Methods
=======

[](#methods)

Coming soon

Command
=======

[](#command)

Coming soon

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

1445d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2510798?v=4)[Dmitriy Kovalev](/maintainers/pipisco)[@pipisco](https://github.com/pipisco)

---

Top Contributors

[![pipisco](https://avatars.githubusercontent.com/u/2510798?v=4)](https://github.com/pipisco "pipisco (20 commits)")

---

Tags

ftpfilesystemlaravels3sftplaravel-packageexpresslanding

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/expresslanding-laravel-filesystem/health.svg)

```
[![Health](https://phpackages.com/badges/expresslanding-laravel-filesystem/health.svg)](https://phpackages.com/packages/expresslanding-laravel-filesystem)
```

###  Alternatives

[league/flysystem

File storage abstraction for PHP

13.6k639.1M2.2k](/packages/league-flysystem)[creocoder/yii2-flysystem

The flysystem extension for the Yii framework

2931.7M62](/packages/creocoder-yii2-flysystem)[innoge/laravel-rclone

A sleek PHP wrapper around rclone with Laravel-style fluent API syntax

174.1k](/packages/innoge-laravel-rclone)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
