DependencyInjection).ServiceProvider (recommended for minimalism).clamav or exec() for CLI calls).| Risk Area | Severity | Mitigation |
|---|---|---|
| Symfony-Laravel Integration | Critical | Prefer tissue/tissue directly or build a Laravel wrapper. |
| ClamAV Dependency | High | Ensure ClamAV is installed/configured; handle failures gracefully. |
| Performance Overhead | Medium | Scan files asynchronously (queues) to avoid blocking requests. |
| Security Misconfiguration | High | Validate all scanned files; restrict ClamAV CLI access. |
| Bundle-Specific Assumptions | High | Abstract Symfony-specific code (e.g., ContainerBuilder) behind interfaces. |
tissue/tissue suffice?tissue/tissue library is PHP-agnostic and can be used directly.ServiceProvider to expose Tissue functionality.cleentfaar/tissue-bundle with tissue/tissue in composer.json.autoload-dev for Bundles).config/tissue.php (or environment variables).// config/tissue.php
return [
'clamav_binary' => env('CLAMAV_BINARY', '/usr/bin/clamscan'),
'scan_on_upload' => true,
'allowed_mime_types' => ['image/jpeg', 'application/pdf'],
];
// app/Providers/TissueServiceProvider.php
public function register()
{
$this->app->singleton(TissueScanner::class, function ($app) {
return new TissueScanner(config('tissue.clamav_binary'));
});
}
// app/Facades/Tissue.php
public static function scanFile(string $path): bool {
return app(TissueScanner::class)->scan($path);
}
| Component | Compatibility | Workaround |
|---|---|---|
| Symfony DependencyInjection | ❌ Incompatible | Use Laravel’s container or manual instantiation. |
| Twig Integration | ❌ Not needed in Laravel | Ignore or replace with Blade directives. |
| YAML/XML Configs | ⚠️ Manual migration to Laravel config | Convert to PHP arrays/ENV vars. |
| ClamAV CLI | ✅ Compatible (PHP exec() or proc_open) |
Ensure PHP-FPM has access to ClamAV binary. |
tissue/tissue and test basic scanning.ServiceProvider and facade.tissue/tissue is actively maintained (check GitHub).tissue/tissue directly; higher if wrapping Symfony Bundle logic.clamscan --version).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| ClamAV Service Down | Scans fail; potential malicious files | Fallback to allowlist or queue retries. |
PHP exec() Disabled |
Scans fail silently | Use proc_open() or enable exec in php.ini. |
| File System Permissions | Scans fail for restricted files | Run PHP worker with ClamAV binary permissions. |
| Malformed File Input | ClamAV crashes or hangs | Validate MIME types before scanning. |
How can I help you explore Laravel packages today?