Download the PHP package cybex/laravel-protector without Composer

On this page you can find all versions of the php package cybex/laravel-protector. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-protector

Laravel Protector

Latest Version on Packagist

This package allows you to download, export and import your application's database backups.

[!IMPORTANT] This package will not work if you have disabled "proc_open" in your PHP configuration.

Common usage scenarios

Feature set

Supported databases

Protector supports the following databases:

Database Driver Dump tool Import tool
MariaDB mariadb mariadb-dump mariadb
PostgreSQL pgsql pg_dump psql

MySQL is no longer officially supported, but the Protector still has capabilities to work with Laravel's mysql driver. If this should break in the future, feel free to submit a PR.

[!NOTE]

  • Source and destination databases are not validated. Make sure you run compatible software versions to prevent issues.
  • Because of different dump formats, dumps will not able to be imported into a different database engine, e.g. a MariaDB dump will fail to be imported into PostgreSQL, and vice versa.

Notes

Table of contents

Usage

Export to file

To save a copy of your local database, run

By default, dumps are stored in storage/app/protector on your default project disk. You can configure the target disk, filename, etc. by publishing the protector config file to your project

Import

Run the following command for an interactive shell

Importing a specific source

To download and import the server database in one go, run

When used with other options, remote will serve as fallback behavior.

To import a specific database file that you downloaded earlier, run

Or just reference the database file name relative to the protector dump directory (default is storage/app/private/protector)

To import the latest existing database file, run

Options

If you want to run migrations after the import of the database file, run

For automation, also consider the flush option to clean up older database files, and the force option to bypass user interaction.

To learn more about import options, run

Setup instructions

Find below three common scenarios of usage. These are not mutually exclusive.

Setup for storing the local database

If you only want to store a copy of your local database to a disk, the setup is pretty straightforward.

Installing protector in your local Laravel project

Install the package via composer.

You can optionally publish the protector config to set the following options

Local usage

You can now use the artisan command to write a backup to the protector storage folder.

By default, the file will be stored in storage/protector and have a timestamp in the name. You can also specify the filename.

You could also automate this by

Setup for importing the database of a remote server

This package can run on both servers and client machines of the same software repository. You set up authorized developers on the server and give them the key for their local machine.

Installing protector in your Laravel project

Install the package via composer.

In your User model class, add the following trait.

Publish the protector database migration and optionally modify it to work with your project.

Publish the Laravel Sanctum migration, to make the personal_access_tokens table available.

Run the migrations on the client and server repository.

You can optionally publish the protector config to set options regarding the storage, access and transmission of the files.

On the client machine

Run the following command to receive

[!IMPORTANT] Do not give your private key to anyone and keep it protected at all times!

Your server admin will then give you the token and dump endpoint URL to save in your .env file.

See Usage on how to import the remote database.

[!NOTE] Downloaded database dump files are stored unencrypted.

On the server

Make sure that the server is accessible to the client machine via HTTPS.

When one of your developers gives you their public key, you can authorize them with:

You will receive the token and dump endpoint URL to give back to the developer, who has to save them in their .env file.

The developer can then download and import the server database on their own.

Setup for collecting backups from multiple servers

You can develop a custom client that can access and store remote server backups. The servers can be different Laravel projects that have the protector package installed.

See the previous chapter on how to give your backup client access to all servers. The backup client will need an according user on each target server.

See cybex-gmbh/collector for an example implementation.

Configuration

The protector.php config file sets initial settings for the Protector instance.

Generally, you should keep the Protector singleton instance as is. To create a new instance with different settings, use the ProtectorConfigurator class. For all available configuration options, take a look at the ProtectorConfiguratorContract.

For example, to configure a specific auth token and dump endpoint URL:

Dump metadata

Customize the metadata appended to a dump by adding providers to the dump.metadata.providers array in your config/protector.php file:

Available metadata providers:

  1. DatabaseMetadataProvider: Will always be appended. Adds general information about the dump, such as the database connection and dumped at date.
  2. ProtectorMetadataProvider: Adds information about the settings set on the Protector's config.
  3. EnvMetadataProvider: Adds information based on an .env value. The default .env key used for this is PROTECTOR_METADATA.
  4. GitMetadataProvider: Adds information about the Git repository, such as the current branch and revision.
  5. JsonMetadataProvider: Adds information from a JSON file. The default file path used for this is protector_metadata.json.

[!NOTE] You can create your own metadata providers by implementing the Cybex\Protector\Contracts\MetadataProvider interface. Duplicate provider keys will be merged in the final metadata array, so choose a unique key.

[!TIP] An example of using the JsonMetadataProvider would be to add custom metadata from a CI/CD pipeline. For example, in a GitHub Actions workflow, you could add a step that writes Git information to protector_metadata.json

Development

There is an example app with the Laravel Protector package installed.

The file structure in the container is as follows:

[!NOTE] We disable composer security checking for this package, as vulnerabilities would block the development. The project requiring our package should be responsible for evaluating possible vulnerabilities. For more information, see the composer documentation.

Specific to the example app, for demo data:

Testing

Run tests on the MariaDB database:

Run tests on the PostgreSQL database:

Run tests on the MySQL database:

[!NOTE] Running MySQL tests on the current alpine image will not work, as the MySQL CLI command is only an alias to mariadb and does not fully support the MySQL server.

If you need to run MySQL tests, use a different image. To start up the mysql server, use docker compose --profile mysql up -d

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security-related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Laravel Package Boilerplate

This package was generated using the Laravel Package Boilerplate.


All versions of laravel-protector with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
ext-curl Version *
ext-json Version *
ext-mbstring Version *
ext-pdo Version *
ext-sodium Version *
guzzlehttp/guzzle Version ^7.4
illuminate/support Version ^9.0|^10.0|^11.0|^12.0
laravel/framework Version ^9.0|^10.0|^11.0|^12.0
laravel/sanctum Version ^3.2|^4.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package cybex/laravel-protector contains the following files

Loading the files please wait ...