Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Rackspace Cloud Files Streamwrapper Laravel Package

tvision/rackspace-cloud-files-streamwrapper

A Laravel/PHP stream wrapper for Rackspace Cloud Files that lets you read, write, and manage remote objects using standard filesystem functions, bringing Cloud Files into familiar PHP file operations and Laravel workflows.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a PHP stream wrapper — it registers a custom protocol (e.g. rscloudfiles://) via stream_wrapper_register() so native file functions (fopen, file_get_contents, copy, fstat) transparently hit Rackspace Cloud Files. That is a fundamentally lower integration layer than Laravel expects. Laravel's filesystem abstraction is Storage → Flysystem → adapter. A stream wrapper bypasses Flysystem entirely, which means you lose Laravel's disk configuration, visibility handling, temporary URLs, assertExists, fake/testing hooks, and event dispatching. Forcing a wrapper under Storage requires a custom adapter that wraps a wrapper — an anti-pattern that adds latency and indirection for no benefit.

Integration feasibility. Low. Last release 2013-11-13, zero stars, zero dependents. This predates PSR-4 adoption, modern Composer constraint practices, and almost certainly depends on rackspace/php-opencloud v1.x (abandoned). Composer resolution against PHP 8.x is likely to fail outright or require --ignore-platform-reqs hacks. There is no Laravel service provider, no config publish, no facade — integration is bespoke glue you would write and own.

Technical risk. Very high, on three axes:

  • Upstream viability: Rackspace Cloud Files is an OpenStack Swift-based service whose public-cloud lineage has been wound down. The SDK is abandoned; the service itself should be confirmed as still provisioned and supported before any design work.
  • Security: Stream wrappers are a known attack surface. Any path that lets user input influence the wrapper URI opens path-traversal and SSRF-style probing against your object store, and if allow_url_include is ever enabled, remote file inclusion. PHP 8.1+ also adds tentative return types to streamWrapper methods, so this class will emit deprecations at minimum and can fatal at worst.
  • Correctness: 2013-era wrappers typically lack retry/backoff, pagination for container listings, multipart/large-object handling, and checksum verification.

Key questions. Is the Rackspace Cloud Files account still live, and what is the contractual exit date? What is the object count, average object size, and peak request rate? Which PHP and Laravel versions are in scope? Is the requirement "keep using Rackspace" or "keep using this wrapper" — because the former can be satisfied by a maintained Swift adapter? Who is the named owner willing to fork and maintain this code?

Integration Approach

Stack fit. Poor as-is. The idiomatic Laravel answer is a Flysystem v3 adapter (league/flysystem-openstack-swift for Swift, or an S3-compatible adapter if you migrate). That gives you Storage::disk('...'), putFile, temporaryUrl, and testable fakes for free — none of which a raw stream wrapper provides.

Migration path. Treat this package as a bridge, not a destination. Recommended sequence: (1) inventory every call site touching Rackspace via static analysis and log inspection; (2) stand up a maintained Swift adapter (or target S3/Rackspace-compatible storage) behind a Laravel disk name that matches the existing one; (3) dual-read with shadow writes to validate parity; (4) flip reads, then retire writes; (5) decommission the wrapper. Only if a hard blocker forces retention of this specific package would you fork it, pin it in a private VCS repository, and add PHP 8 return types and retry logic.

Compatibility. Expect PSR-0-style autoloading, no composer.json platform constraints compatible with PHP 8, and a hard dependency on an abandoned OpenStack SDK. The wrapper also mutates global state at registration time, which conflicts with Laravel Octane's long-lived workers unless registration is guarded and idempotent. PHP 8.1+ deprecations must be patched or silenced deliberately, not ignored.

Sequencing. Do not sequence this package into a greenfield build. If a legacy system already uses it, sequence it as the first thing scheduled for removal, ahead of feature work, because every sprint it survives increases the blast radius of the eventual forced migration.

Operational Impact

Maintenance. Effectively zero upstream maintenance. Adopting this means accepting a permanent fork with an internal owner, a documented patch set, and a recurring budget line. There is no CVE feed, no changelog, and no release cadence to track.

Support. No community to escalate to (0 stars, 0 dependents means no peer-reviewed usage). Rackspace support, if the account still exists, covers the storage service, not this PHP client — so every integration defect lands on your team. Escalation path is essentially "we own it."

Scaling. The wrapper does per-request connection setup with no pooling, and 2013-era SDKs handle large-object multipart uploads and container pagination poorly or not at all. Streaming very large files through PHP's stream layer risks memory ceilings, max_execution_time timeouts, and partial-write corruption on network interruption. There is no built-in retry or circuit breaking, so a Rackspace hiccup becomes a cascade of hung PHP-FPM workers.

Failure modes.

  • Silent degradation (highest severity): if the wrapper is not registered, file_exists() returns false and fopen() returns false rather than throwing. Code that does not check return values will interpret missing objects as "file absent" and may overwrite or skip data.
  • Deploy-time fatal: Composer dependency resolution failure on modern PHP blocks the entire release pipeline.
  • Partial writes: interrupted streams leave truncated objects with no verification, since old wrappers rarely check ETags.
  • Security exposure: user-influenced wrapper URIs enable traversal/SSRF; any allow_url_include configuration is a direct RCE vector.
  • Octane incompatibility: repeated stream_wrapper_register() across workers can produce "protocol already registered" warnings or stale handler state.

Ramp-up. The public surface is trivial — a stream wrapper is standard PHP and any mid-level engineer can call fopen('rscloudfiles://...') in minutes. The real ramp-up cost is debugging legacy SDK internals and the abandoned Rackspace auth handshake, which typically takes days per incident because there is no documentation trail and no community to consult.

Verdict. Do not adopt. Use a maintained Flysystem Swift adapter to bridge any surviving Cloud Files usage, and fund a migration off Rackspace Cloud Files entirely. The 0.43 score, zero dependents, and twelve-year release gap are not noise — they are the signal.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style