Skip to content

The Laravel OCI Driver is a custom filesystem driver for Laravel that allows your application to interact with Oracle Cloud Infrastructure (OCI) Object Storage services, much like how Laravel integrates with Amazon S3.

License

Notifications You must be signed in to change notification settings

mohamedhabibwork/laravel-oci-driver

 
 

Repository files navigation

Laravel OCI Driver

Laravel OCI Driver

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads PHPStan Level


🛠️ How to Install

composer require mohamedhabibwork/laravel-oci-driver

🚀 Implemented Features

  • Artisan Commands:

    • oci:setup – Create Oracle-compatible .oci folder, generate/copy key files, write config
    • oci:config – Interactive configuration for OCI settings, with --validate to check config
    • oci:connection – Manage multiple OCI connections: list, test, switch, summary
    • oci:status – Check connection status, test file operations, and list files in a bucket
  • Key Providers:

    • File-based (from file path)
    • Environment-based (from env variable, supports base64)
    • Custom providers via interface
  • Enums:

    • ConnectionType (primary, secondary, backup, development, testing, staging, production, archive)
    • StorageTier (Standard, InfrequentAccess, Archive)
    • LogLevel (emergency, alert, critical, error, warning, notice, info, debug)
  • Exception Handling:

    • PrivateKeyFileNotFoundException
    • SignerValidateException
    • SigningValidationFailedException
  • Configuration:

    • All required OCI config: tenancy, user, fingerprint, key path, region, namespace, bucket, storage tier
    • Optional: prefix, url, passphrase, advanced performance/cache options, debug/logging
  • Integration:

    • Laravel filesystem disk driver (oci)
    • Event system for file operations (upload, download, delete, etc.)
    • Service provider auto-registers everything
    • Health check and connection validation built-in

⚡ Quick Start

use Illuminate\Support\Facades\Storage;

// Upload a file
Storage::disk('oci')->put('documents/hello.txt', 'Hello, Oracle Cloud!');

// Download a file
$content = Storage::disk('oci')->get('documents/hello.txt');

// List files
$files = Storage::disk('oci')->files('documents');

📚 Documentation


📝 API Reference

See the API_REFERENCE.md for full method signatures, options, and advanced usage. For configuration, authentication, and advanced features, see the relevant guides above.


🧪 Testing

composer test

See the Testing Guide for more details and examples.


🔧 Troubleshooting

  • Use php artisan oci:config --validate to check your configuration
  • Ensure your OCI credentials and key files are correct
  • Check file permissions for private keys
  • See TROUBLESHOOTING.md for more help

🤝 Contributing

See CONTRIBUTING.md for guidelines.


📞 Support


📄 License

The MIT License (MIT). See LICENSE.md for details.


🗺️ Roadmap

  • Advanced Health Checks (Spatie Health integration)
  • Connection Pooling and advanced parallel/multipart upload support
  • Custom Event Listeners for all storage operations
  • Improved Error Reporting and user-friendly CLI output
  • Web UI for Connection Management
  • More Key Providers (e.g., HashiCorp Vault, AWS Secrets Manager)
  • Automatic Key Rotation
  • Enhanced Documentation & Examples
  • Support for Additional OCI Services (beyond Object Storage)
  • Performance Benchmarks and Tuning Guides

👥 Credits


Made with ❤️ for the Laravel community

⭐ Star us on GitHub | 📚 Documentation | 🐛 Report Bug | 💡 Request Feature

About

The Laravel OCI Driver is a custom filesystem driver for Laravel that allows your application to interact with Oracle Cloud Infrastructure (OCI) Object Storage services, much like how Laravel integrates with Amazon S3.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages

  • PHP 100.0%