You're looking at v1 documentation. The current version is v3. You can find the docs for the current version here.

Filesystem Tenancy

Note: It's important to differentiate between storage_path() and the Storage facade. The Storage facade is what you use to put files into storage, i.e. Storage::disk('local')->put(). storage_path() is used to get the path to the storage directory.

The storage_path() will be suffixed with a directory named config('tenancy.filesystem.suffix_base') . $uuid.

The root of each disk listed in tenancy.filesystem.disks will be suffixed with config('tenancy.filesystem.suffix_base') . $uuid.

However, this alone would cause unwanted behavior. It would work for S3 and similar disks, but for local disks, this would result in /path_to_your_application/storage/app/tenant1e22e620-1cb8-11e9-93b6-8d1b78ac0bcd/. That's not what we want. We want /path_to_your_application/storage/tenant1e22e620-1cb8-11e9-93b6-8d1b78ac0bcd/app/.

That's what the root_override section is for. %storage_path% gets replaced by storage_path() after tenancy has been initialized. The roots of disks listed in the root_override section of the config will be replaced accordingly. All other disks will be simply suffixed with tenancy.filesystem.suffix_base + the tenant UUID.

Since storage_path() will be suffixed, your folder structure will look like this:

The folder structure

If you write to these directories, you will need to create them after you create the tenant. See the docs for PHP's mkdir.

Logs will be saved to storage/logs regardless of any changes to storage_path().

One thing that you will have to change if you use storage similarly to the example on the image is your use of the helper function asset() (that is, if you use it).

You need to make this change to your code:

-  asset("storage/images/products/$product_id.png");
+  tenant_asset("images/products/$product_id.png");

Note that all (public) tenant assets have to be in the app/public/ subdirectory of the tenant's storage directory, as shown in the image above.

This is what the backend of tenant_asset() returns:

// TenantAssetsController
return response()->file(storage_path('app/public/' . $path));

With default filesystem configuration, these two commands are equivalent:

Storage::disk('public')->put($filename, $data);
Storage::disk('local')->put("public/$filename", $data);

If you want to store something globally, simply create a new disk and don't add it to the tenancy.filesystem.disks config.